2009-12-18 81 views
12

我们公司的大型数据库的重新设计大量使用数据库上的复合主键。使用实体框架4.0的复合数据库密钥

遗忘性能的影响,这将导致在使用Entity Framework 4.0中的这个数据库时遇到任何困难?数据库结构不太可能改变,我不是在寻找“哲学上的”辩论,但是实际的影响是什么?

根据Jeremy Miller,“复合键使任何类型的对象/关系映射和持久性通常更难”。但他并没有真正说出原因。这与Entity Framework 4.0如何处理密钥有关吗?

回答

13

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

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

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

8

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

查看我之前的问题Mapping composite foreign keys in a many-many relationship in Entity Framework了解更多详情。它的坚果是,当你有一个连接表(描述一个多对多的关系)如双方关系的使用公共密钥,你会得到这样的错误

错误3021:在测绘 问题片段...:每个在表网页浏览以下 列被映射到多个 概念性侧属性: PageView.Version被映射到 (PageView_Association.View.Version, PageView_Association.Page.Version)

解决它的唯一方法就是复制这个专栏完全违背了它的目的。

祝你好运!

+6

可笑的讨厌。 – 2011-09-25 17:04:39