我有几个只共享少数导航属性和ID的表。 我想每个具体类型继承表将是有趣在这里.. 它看起来是这样的:实体框架:每个具体类型的表和表中的唯一ID
联系(基地,抽象的,没有映射)
- 使用ContactID
- 导航属性与其他表((?)电子邮件,电话,..)
人:联系(映射到表人用各种属性+的ContactID)
- 各种属性
公司:联系(映射到表W公司ith各种属性+联系人ID)
- 各种属性
现在为了这个工作,主键(contactID)应该在所有表中都是唯一的。 2选项然后:
- GUID(不是粉丝)
- 附加的数据库表生成标识(只有一个ContactID字段,派生表具有FK),这将不会在EF中映射。
此设置是否可行? 另外,ObjectContext中会发生什么? EF在调用SaveChanges之前生成什么样的临时密钥?它是唯一的跨物体吗?
感谢您的任何想法。 麦克风。
非常感谢,这正是设计的我试图达到的那种。我有一个类似的“CP '表作为一个多对多的表,另外一个问题(实际上是一个复合的问题):你是否将基类(CP,CE)映射到它们的基础表?如果你这样做,我想我们是TPT设置(不是TPC)还是我错了?如果是TPT,它不会产生令人讨厌的SQL与很多工会?谢谢。 – Mike 2010-12-16 17:03:41
(更新为我的最后一个问题:我想这就是你的'ContactTypeID'在CP作为你的基类中的一个鉴别器?所以你不必整合所有的联系表来找出类型,对吧?) – Mike 2010-12-16 17:44:38
Hi Mike,C P表充当多对多的表......在我的情况下,这对许多(CP)都是1(CE)。是的,我将(抽象)基类映射到它们的基础表,实际上EntityModel生成器会为我做这件事;)是的,这是一个Table-Per-Type场景。这种情况也提供了一些数据库优化,因为您必须跟踪更少的外键,并且使用其他CP或CE“类型”更容易维护和扩展。 – 2010-12-16 19:31:52