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

Ela*_*nda 11 c# asp.net entity-framework asp.net-mvc-3

我先使用EF DB.

我已经提出了一个观点.

将其映射到EF.

现在我收到以下错误:

错误2错误111:Principal Role App引用的属性必须与Relationship MaMDBModel.FK_AppsData_App的关系约束中的Principal Role引用的EntityType MaMDBModel.App的键完全相同.确保在主体角色中指定了所有关键属性.D:\ MaM\Dev\MamAdmin_1.0\MaMDBEntityFramework\MaMModel.edmx 768 11 MaMDBEntityFramework

这是我的edmx:

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

Sla*_*uma 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.
-->
Run Code Online (Sandbox Code Playgroud)

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


Dam*_*gel 5

只是在一个大型项目中遇到了相同的错误,基本上.edmx文件的Diagram视图很大,以至于没有搜索几天就找不到相关表。

这是我可以解决的方法:

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

就我而言,我添加了一个列,EF认为这是一个PK,但事实并非如此。所以我想设置column属性Entity Key = False,这对我来说解决了。


Jas*_*ana 5

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