具有Entity Framework 4.0的复合数据库密钥

Ste*_*ard 12 entity-framework primary-key composite-key

我们公司对大型数据库的重新设计大量使用了数据库上的复合主键.

忘记性能影响,这会在Entity Framework 4.0中使用此db时遇到任何困难吗?数据库结构不太可能改变,我不是在寻找"哲学"辩论,但实际影响是什么?

杰里米·米勒,"复合键使任何类型的对象/关系映射和一般很难持久性的." 但他并没有真正说出原因.这与Entity Framework 4.0如何处理密钥有关吗?

Joh*_*ell 13

不,EF4支持复合键就好了.

问题是带有代理键和复合键的表.您只能在每个型号上设置一个键; 该键可以有多个字段,但从设计者的角度来看,您只能拥有一个字段.不确定手动编辑xml或仅代码映射.

如果需要在同一个表上使用复合和代理键,则可以将字段设置为标识而不是键.ObjectContext或ObjectStateTracker不会使用Identity(Id)字段,但会增加并且可以查询.


Kir*_*rst 8

我遇到了EF4和复合键的问题.它不支持将列用作连接表中多个键的组件.

有关更多详细信息,请参阅我之前的问题在Entity Framework中的多对多关系中映射复合外键.它的核心是当你有一个连接表(描述许多关系),其中两个关系使用一个公共密钥时,你会得到一个像

错误3021:映射片段中的问题...:表PageView中的以下每个列都映射到多个概念侧属性:PageView.Version映射到(PageView_Association.View.Version,PageView_Association.Page.Version)

解决这个问题的唯一方法是复制该列,这样就完全违背了它的目的.

祝好运!

  • 可笑的很烦人. (6认同)