entity framework – “映射片段中的问题” – 错误。 帮我理解这个错误的解释
错误3007:从行186,205开始映射片段时出现问题:将非主键列[WheelID]映射到两个片段中的不同概念侧属性 – 数据不一致是可能的,因为相应的概念侧属性可能是独立修改。
我在网上发现了几处描述这个错误的地方,但是我根本不理解它们。 (困惑的笑脸在这里)
一
二
三
四
这里有一些非常重要的东西,我必须失踪。 你能解释一下吗,这样我就明白了吗? 也许用下面我真实生活的例子?
替代文字http://i39.tinypic.com/2hppnoo.jpg
外键1:N Wheels.Id – > Slices.WheelId
我将它们添加到entity framework中,WheelId在Slices实体中不可见。
替代文字http://i43.tinypic.com/287hq87.jpg
做一些解决方法(在添加表格到EF之前删除数据库中的关系 – 然后重新创build并更新EF)我设法让WheelId留在切片中,但是我得到了上面提到的错误。
由于Slices.WheelId是FK,因此您不能在客户端模型中显示它。 尽pipe如此,还是有办法获得价值的。
var wheelId = someSlice.Wheels.ID;
更新在EF 4中,您可以使用FK关联而不是独立关联来完成此操作。
尝试使用实体模型devise从实体集中移除外来属性列它将解决您的问题
例如
我们有两个表,一个是客户 ,另一个是订单 ,使用实体模型devise,我们添加了客户和订单之间的关联,当我们这样做时,Ado.netentity framework将向下面的表添加导航属性。
像Customer.Orders – 这里的订单是列表Order.Customer
一 – 许多关系。
所以我们需要从Order实体集中的名字CustomerId [Foreign key column]中删除属性。
以供参考:
我已经在数据库中设置了外键,但框架仍然没有正确拉动它们。 所以我试图自己添加关联。
但是,当我这样做,我会得到一个映射错误。 我花了一段时间,但我想通了。 我所做的是使用实体工具箱关联工具设置关联,然后您必须双击关联(1到多)行并在其中设置主键和外键。 希望这可以帮助那些可能会遇到同样问题的人。 我无法在任何地方find答案。
我有这个问题的原因很不一样,而且信息略有不同。 它没有说“数据不一致是可能的,因为相应的概念方面的属性可以独立修改”。
我有一个表格涉及我的模型与二进制列,我存储的图像数据。 我只需要在需要时返回这个数据(性能是一个function),所以我使用类似于这个的方法拆分表。 稍后,我向该表中添加了一个属性,然后从数据库更新了该模型。 该向导将该属性添加到引用具有添加属性的表的两种实体types。 我不得不从其中之一删除它来解决错误。
我能够通过以下步骤解决这个问题:右键单击devise器窗口select“从数据库更新模型”select添加并确保选中“在模型中包含外键列”checkbox。 点击完成…
我发生过这种情况,因为entity framework更新向导错误地映射了一些键 (或没有更新?)。 结果,一些列被错误地标记为键,而实际的键列被视为简单的列。
解决scheme是手动打开EDMX文件,find实体,并更新密钥。
对于EF1中的LinQ to Entities查询,我无法访问外键作为属性的解决方法是使用以下代码,该代码不会生成对关联表的连接查询:
dbContext.Table1s.FirstOrDefault(c => (int?)c.Table2.Id == null)
即生成的SQL是:
...WHERE ([Extent1].[Table2Id] IS NULL)...
解决scheme是允许删除Rule = Cascade关联的Sql。
在.edmx模型上做同样的事情,添加关联元素:
<Association Name="FK_Wheels_Slices"> <End Role="Wheels" Type= "your tipe here" Multiplicity="1"> <OnDelete Action="Cascade" /> </End> </Association>
我有一张已经在EF中映射的表格。 我添加了两个更多的表,在以前添加的表中有外键。 然后我得到了3007错误。
为了解决这个错误,我从EDMX文件中删除了所有的三个表,然后一起重新添加它们(通过“从数据库更新模型…”),而不是分阶段。
无法得到任何与EF6工作的答案。 问题似乎是框架不正确地导入外键作为关联。 我的解决scheme是从表中删除外键,然后使用entity framework模型手动添加关联,使用以下步骤: entity framework – 手动添加导航属性