使用紧凑版的LINQ to SQL关系

时间:2013-05-02 14:35:39

标签: sql linq linq-to-sql sql-server-ce relational-database

我在尝试使用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版本的服务器。结果仍然相同。

0 个答案:

没有答案