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

Kje*_*sen 47 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中,但后来我得到了顶部提到的错误.

Cra*_*ntz 42

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

var wheelId = someSlice.Wheels.ID;
Run Code Online (Sandbox Code Playgroud)

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


Ven*_*kat 27

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

例如

我们有两个表,一个是客户,另一个是订单,使用实体模型设计我们在客户和订单之间添加了关联,当我们这样做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/


jah*_*sha 5

我可以通过以下步骤解决此问题:右键单击设计器窗口,选择“从数据库更新模型”,选择“添加”,并确保选中“在模型中包括外键列”复选框。点击完成...