2011-01-06 49 views
0

我只是想抛出这个问题来对我的ORM设计进行完整性检查,以确保我所采取的方式不是某种疯狂的反模式。我的情况是,在我的设计中,我有一个与其他4个班有关系的班级。因此,如果我有类A,B,C,D和E类B,C,D和E都与A类有一个“Has-An”关系。目前,我只知道LINQ-To -Sql定义关系是通过在A中为与它有关系的每个实体创建一个外键列来实现的。虽然这样做有缺点,在数据库中有四列,其中三列总是空的。这仅仅是ORM工具的限制吗?任何意见或建议,将不胜感激。在LINQ-to-SQL中建模多个对象关联

回答

0

所以我忘记了这种类型的关联的确切名称,但我相信它被称为多态关联。我的理解是,LINQ实体不支持Ruby on Rails所做的多态关联,但是你想要做的是:

  1. 创建表A,B,C,D,E而不定义它们关系到彼此之一。
  2. 为每个表分配一个UniqueIdentifier列(这是一个GUID)。
  3. 创建一个“Relationships”表(可能想要创建一个更好的名称)
  4. 关系表有两列,类似于Source和Destination,都是类型GUID或UniqueIdentifier(我忘记了什么是MSSQL服务器调用它)

不好的部分是MSSQL不能强制执行外键关系(这就是为什么LINQ实体不支持它)所以必须在你的业务逻辑中完成或在StoredProcedure中

这会给你一个选择,即添加一个F类型并使用同一个表来表达一个H as-A关系F和A.

+0

感谢您的提示科林斯。只知道我想要做的名字有助于!我可能会为我的下一个项目使用NHibernate。 – 2011-01-10 17:31:13