Principal Role App引用的属性必须与EntityType的键完全相同

时间:2012-11-11 13:28:42

标签: c# asp.net asp.net-mvc-3 entity-framework

我先使用EF DB。

我已经提出了一个观点。

将其映射到EF。

现在我收到以下错误:

  

错误2错误111:主要角色应用程序引用的属性必须   与EntityType MaMDBModel.App的密钥完全相同   由关系约束中的主体角色引用   关系MaMDBModel.FK_AppsData_App。确保所有的钥匙   属性在主体角色中指定。   D:\ MaM \ Dev \ MamAdmin_1.0 \ MaMDBEntityFramework \ MaMModel.edmx 768 11   MaMDBEntityFramework

这是我的edmx:

http://ge.tt/3rRWTOR/v/0?c

3 个答案:

答案 0 :(得分:9)

edmx文件中有一条错误消息:

<!--Errors Found During Generation:
warning 6002: The table/view 'MamDB.dbo.VW_APPSDATA' does not have a primary key
defined. The key has been inferred and the definition was created as a read-only
table/view.
-->

EF推断出的关键可能是错误的。根据消息,您应该在数据库中为视图定义主键。

答案 1 :(得分:3)

一个相当老的问题,但今天仍然有意义,所以我认为我应该分摊2美分。如果事实证明,重新映射两个表之间的关系比它值得的麻烦更多(如我的情况),则可以尝试从EDMX中删除问题表,进行保存,然后将它们重新添加到EDMX中。 / p>

答案 2 :(得分:2)

在一个巨大的项目中出现了同样的错误,基本上.edmx文件的Diagram视图如此之大,你甚至没有找到关注的表而没有搜索几天。

以下是我可以解决的问题:

  • 打开.edmx文件
  • 打开模型浏览器(CTRL + 1 / VIEW&gt;其他Windows&gt;实体数据模型浏览器)
  • 从实体类型中的错误消息(即VW_APPSDATA)中查找表
    • (也许右键单击,在图中显示)
  • 将实体类型列定义与数据库定义进行比较

在我的情况下,我添加了一个列,EF认为它是PK,但事实并非如此。所以我要设置列属性Entity Key = False,这就解决了它。