11

我首先使用 EF DB。

我提出了看法。

将其映射到 EF。

现在我收到以下错误:

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

这是我的 edmx:

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

4

3 回答 3

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 推断的密钥可能是错误的。根据消息,您应该在数据库中为您的视图定义一个主键。

于 2012-11-11T14:32:17.533 回答
7

一个相当老的问题,但今天仍然相关,所以我想我会分享我的 2 美分。如果事实证明重新映射两个表之间的关系比它的价值更麻烦(就像我的情况),您可以尝试从 EDMX 中删除问题表,保存,然后再次将它们重新添加到 EDMX。

于 2018-07-05T02:54:09.443 回答
6

刚刚在一个巨大的项目中遇到了同样的错误,基本上 .edmx 文件的图表视图太大了,你甚至没有搜索几天就找不到相关的表。

这是我可以解决的方法:

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

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

于 2017-12-19T12:58:25.667 回答