实体框架 - “映射片段中的问题” - 错误。帮助我理解这个错误的解释

entity-framework

错误3007:从第186,205行开始映射片段中的问题:非主键列[WheelID]在两个片段中被映射到不同的概念侧属性 - 数据不一致是可能的,因为相应的概念侧属性可以是独立修改。

我在网上发现了几个描述这个错误的地方,但我根本就不理解它们。 (迷茫的笑脸在这里)




这里有一些非常重要的东西,我必须要失踪。你能解释一下,以便我明白吗?也许使用我下面的真实例子?

alt text http://i39.tinypic.com/2hppnoo.jpg

外键1:N Wheels.Id - > Slices.WheelId

我将它们添加到实体框架中,并且在Slices-entity中看不到WheelId。

替代文字http://i43.tinypic.com/287hq87.jpg

做一些解决方法(在将表添加到EF之前从db中删除关系 - 然后重新创建它并更新EF)我设法让WheelId保持在Slices中,但后来我得到了顶部提到的错误。

一般承认的答案

由于Slices.WheelId是FK,因此您无法在客户端模型中公开它。但是,有很多方法可以获得价值。

var wheelId = someSlice.Wheels.ID;

更新在EF 4中,您可以使用FK关联而不是独立关联来完成此操作。


热门答案

尝试使用实体模型设计从实体集中删除外部属性列,它将解决您的问题

例如

我们有两个表,一个是客户 ,另一个是订单 ,使用实体模型设计我们在客户和订单之间添加了关联,当我们这样做Ado.net实体框架时,我将向下面的表添加导航属性。

与Customer.Orders一样 - 此处的订单是Order.Customer

一个 - 很多关系。

因此,我们需要从Order实体集中删除名称为CustomerId [Foreign key column]的属性。

以供参考:

http://social.msdn.microsoft.com/forums/en-US/adodotnetentityframework/thread/2823634f-9dd1-4547-93b5-17bb8a882ac2/




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因