添加实体模型时出现错误3007

时间:2009-09-02 19:29:04

标签: entity-framework entity-relationship

当我将实体模型添加到我的解决方案时,我收到错误3007。

我找到了这些链接:

Good explination

Short answer

关于此错误:

  

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

他们的答案:我同意他们的结论,只需删除标量属性Person_ID并保留导航属性我的问题就解决了。然而,由于我正在动态构建数据库并且我的实体经常更新,因此这不是很可扩展。我不希望每次更新它时都要经历并清理我的实体。

我的问题:有没有办法通过纠正EF构建实体的方式来修复错误?或者有没有办法通过代码删除Scalar属性?也许甚至有一些我忽视的选择。

2 个答案:

答案 0 :(得分:5)

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

例如

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

像 Customer.Orders - 这里的订单是列表 Order.Customer

一对多关系。

因此,我们需要从订单实体集中删除名称为 CustomerId [外键列]的属性。

供参考:

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

答案 1 :(得分:0)

我对EF v1的体验与您的相似。如果EDM生成不正确且您无法解决问题,则必须手动编辑EDM。 EF v.Next(我相信实体框架v4)将支持“仅代码”实体数据模型,EDM设计师应该会更好。一个或另一个改进应该让我们的生活更轻松。在那之前...