我在尝试使用 linq to sql 在我的两个数据库实体之间创建关系时遇到问题。我一直在遵循这个基本的 Microsoft 指南,但没有让它发挥作用。
我正在尝试存储一个树状结构。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 表没有关系列,之后我查询数据库时似乎没有存储任何关系值。
我错过了什么?我与链接的 Microsoft 文章的关系几乎相同。
谢谢你的时间!
编辑:生成的 SQL 代码就是这样的:
CREATE TABLE [ConfigUnit](
[cuID] Int NOT NULL IDENTITY,
[topID] Int NOT NULL,
CONSTRAINT [PK_ConfigUnit] PRIMARY KEY ([cuID])
)
即根本不产生任何关系。我能找到的唯一其他相关问题是缺少实体上的主键的人,而我不是。
编辑 2:我尝试使用完整的 SQL 服务器而不是 Compact 版本。结果还是一样。