我在尝试使用linq to sql来创建我的两个数据库实体之间的关系时遇到了问题。我一直关注this basic Microsoft guide,但没有让它发挥作用。
我正在尝试存储树状结构。 ConfigUnit类包含有关项类别的信息,并存储树名称和根节点。
storeItem包含该树中每个节点的信息。
[Table(Name = "ConfigUnit")]
public class ConfigUnit
{
[Column(IsPrimaryKey = true, IsDbGenerated = true)]
public int cuID;
...
private EntitySet<storeItem> _rootNode;
[Association(Storage = "_rootNode", ThisKey = "cuID", OtherKey = "cuID")]
public EntitySet<storeItem> rootNode
{
get
{
return _rootNode;
}
set
{
_rootNode = value;
}
}
}
还有storeItem类:
[Table(Name = "storeItem")]
public class storeItem
{
[Column(IsPrimaryKey = true, IsDbGenerated = true)]
public int siID;
[Column]
public int cuID;
private EntityRef<ConfigUnit> _CU;
[Association(Storage = "_CU", ThisKey = "cuID")]
public ConfigUnit ConfigUnit
{
get { return this._CU.Entity; }
set { this._CU.Entity = value; }
}
...
}
但是,当我运行代码并使用DataContext.CreateDatabase()创建数据库时,似乎不会创建关系。 ConfigUnit表没有关系列,并且在我之后查询数据库时似乎没有存储任何关系值。
我错过了什么?我正在运行与微软链接文章几乎相同的关系。
谢谢你的时间!
编辑: 生成的SQL代码就是这样:
CREATE TABLE [ConfigUnit](
[cuID] Int NOT NULL IDENTITY,
[topID] Int NOT NULL,
CONSTRAINT [PK_ConfigUnit] PRIMARY KEY ([cuID])
)
即根本没有产生任何关系。 我能找到的唯一其他相关问题是那些在实体上缺少主键的人,我不是。
编辑2: 我尝试使用完整的SQL服务器而不是Compact版本的服务器。结果仍然相同。