1

我正在使用 linq to SQL ,我有两个问题。

这是我的 DBML 文件中的快照在此处输入图像描述

第一个:- 在 WorkflowInstance 表中,当我调用 WFTypeID 属性或任何关系时,它给了我 int?字段不是对象,不像在 ApplicationForm 表中它工作正常。我检查了designer.cs文件,它继续定义它们 System.Data.Linq.Mapping.ColumnAttribute 而不是 System.Data.Linq.Mapping.AssociationAttribute 知道为什么某些表会发生这种情况而有些则不会?!

第二个问题:- 一些表有 1:N 关系和一些 1:1 关系。将关系显示为 EntityRef 或 EntitySet 的所有表。为什么它不给我一个对象。还是这是正常行为?!

4

2 回答 2

2

1:LINQ-to-SQL 公开了双重 API:外键通常原始形式对象形式呈现。所以我完全希望WFTypeID成为一个int?或类似的人。有趣的问题是:还有WFType属性吗?如果没有,您可能需要检查关联属性。单击虚线,查看子/父属性,并检查基数。

2: {0|1}-* 关系中的支持字段是 是正常的EntityRef<T>,但是 - LINQ-to-SQL 生成的公共API 应该只是T; 例如:

[global::System.Data.Linq.Mapping.AssociationAttribute(Name="AssociationName", Storage="_User", ThisKey="UserId", OtherKey="Id", IsForeignKey=true)]
[global::System.Runtime.Serialization.DataMemberAttribute(Order=7, EmitDefaultValue=false)]
public User User
{
    get
    {
        if ((this.serializing 
                    && (this._User.HasLoadedOrAssignedValue == false)))
        {
            return null;
        }
        return this._User.Entity;
    }
    set
    {
        if ((this._User.Entity != value))
        {
            this.SendPropertyChanging();
            this._User.Entity = value;
            this.SendPropertyChanged("User");
        }
    }
}

其中 member-name 来自关联的“父属性”>“名称”:

在此处输入图像描述

请注意,_UserEntityRef<User>,但 public 属性User是 type User

于 2013-01-21T07:51:59.650 回答
0

第一个问题:WFTypeID 字段代表一个外键,我猜你的主键是整数;返回整数是正常的。

第二个问题:如果关系是1比1;您将获得一个 EntityRef 对象,该对象代表关系另一端的对象。如果关系是 1:N,另一方面,您将获得一个表示对象的 EntitySet。这是正常行为,在一对多关系中,一个实体将映射到“许多”实体,而不是单个对象。

于 2013-01-21T07:43:05.790 回答