我正在使用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的所有表。 为什么它没有给我一个单一的对象。或者这是正常的行为?!
答案 0 :(得分:2)
1:LINQ-to-SQL公开了一个双重API:外键通常以原始形式 ,和作为对象形式。所以我完全希望WFTypeID
成为int?
或类似的。有趣的问题是:还有一个WFType
属性吗?如果没有,您可能需要检查关联属性。单击虚线,查看Child / Parent属性,然后检查基数。
2:{0 | 1} - *关系中的支持字段是EntityRef<T>
是正常的,但是 - public API已生成通过LINQ-to-SQL应该只是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");
}
}
}
其中会员名来自协会的“父母财产”&gt; “名称”:
请注意,_User
为EntityRef<User>
,但公共属性User
的类型为User
。
答案 1 :(得分:0)
第一个问题:WFTypeID字段表示外键,我猜你的主键是整数;返回整数是正常的。
第二个问题:如果关系是1比1;您将获得一个EntityRef对象,表示该关系另一端的对象。如果关系是1:N,则另一方面将获得表示对象的EntitySet。这是正常行为,在一对多关系中,一个实体将映射到“多个”实体,而不是单个对象。