0

我在尝试使用 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 版本。结果还是一样。

4

0 回答 0