加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 元数据集合中已存在具有标识[x]的项目.我该如何解决这个问

发布时间:2020-12-15 08:11:22 所属栏目:百科 来源:网络整理
导读:我正在使用实体框架6,使用POCO和fluent-API,我注意到了一个令人讨厌的错误. 如果我有一个名为MyEntity的实体,并且该实体有一个名为MyProp的属性,则无法创建名为MyEntity_MyProp的实体. 例外: The item with identity 'MyEntity_MyProp' already exists in t
我正在使用实体框架6,使用POCO和fluent-API,我注意到了一个令人讨厌的错误.

如果我有一个名为MyEntity的实体,并且该实体有一个名为MyProp的属性,则无法创建名为MyEntity_MyProp的实体.

例外:

The item with identity 'MyEntity_MyProp' already exists in the metadata collection.rnParameter name: item

如果我重命名任何实体,或重命名属性,错误立即消失.

“bug”是显而易见的:密钥[EntityName] _ [PropertyName]在元数据集合中必须是唯一的.

截图:

我正在迁移一个庞大的实体框架模型,其中包括从EF 4(数据库优先)到EF 6(代码优先,使用fluent-API)的390个类.重命名实体或表格是不可能的.

我该如何解决?

编辑

这个问题与我的问题没有任何关系:The item with identity ‘Id’ already exists in the metadata collection. Parameter name: item

解决方法

当您在实体名称中使用下划线时,会发生此错误.原因是实体框架还使用下划线来创建键的名称(连接实体和属性名称).

因此,如果您有一个名为“Table”的实体,其属性为“Prop”,而一个名为“Table_Prop”的表将发生冲突.这很有可能发生了什么.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读