【问题标题】:Properties referred by the Principal Role App must be exactly identical to the key of the EntityTypePrincipal Role App 引用的属性必须与 EntityType 的 key 完全相同
【发布时间】:2012-10-31 03:46:56
【问题描述】:

我首先使用的是 EF DB。

我已经提出了看法。

将其映射到 EF。

现在我收到以下错误:

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

这是我的 edmx:

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这对我有用。我最初在 edmx 中有一个表,在数据库中添加了第二个表并在 SQL 中创建了关系,然后在将新表更新/添加到模型后出现此错误。谢谢
    【解决方案3】:

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

    这是我可以解决的方法:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-17
      • 1970-01-01
      • 2016-02-11
      • 2019-12-26
      • 2023-03-05
      • 1970-01-01
      • 2018-05-22
      相关资源
      最近更新 更多