【问题标题】:Entity framework edmx fail to Update. Error appear "An entry with same key already exists." [duplicate]实体框架 edmx 无法更新。出现错误“已存在具有相同键的条目”。 [复制]
【发布时间】:2016-05-19 06:08:27
【问题描述】:

我正在尝试更新我的 edmx,右键单击 -> 从数据库更新模型。每次我尝试更新错误时都会出现“已存在具有相同密钥的条目

有大佬可以帮忙吗?

."

【问题讨论】:

  • 在互联网上进行了这么多研究后,我也发现了这个。但什么是重复?如何处理?
  • 您必须检查一些提示: => 通常您在 EntitySetMapping 中有两个相同的节点在文本编辑器中打开您的 edmx 文件,它可能不会从设计器中向您显示副本
  • 先切换到代码 - 请参阅blogs.msdn.com/b/adonet/archive/2014/10/21/…

标签: c# entity-framework edmx edmx-designer


【解决方案1】:

有时重复项可能不会显示在 edmx 图表中,它可能是代码端。 EF 有时会有点混乱,但在处理这些循环漏洞方面不太好。

作为 Fernanda 建议的补充,最干净的方法是删除您的 edmx 文件并重新配置连接字符串。

如果您不想这样做,您可以删除 edmx 中的所有表和函数,保存并查看是否仍然出现相同的错误。如果不再出现相同的错误,请重新添加所有内容并保存。

【讨论】:

  • 感谢您的回答。我认为这是唯一的解决方案。创建重复键几乎是不可能的。我必须删除并重新生成它。
  • 谢谢.. 是的,不会显示重复项。使用@cyril iselin 的提示,我能够找到副本。我采取的方法是在文件中查找“
  • 斯里尼的好建议。我有一个副本,并且在文件中的查找很快找到了副本。我删除了它,问题消失了。 :)
【解决方案2】:

注意 EDMX 方法 will be deprecated in Entity Framework 7:

“从数据库更新模型”是一个允许您 增量地拉取额外的数据库对象(或对现有的 数据库对象)到您的 EDMX 模型中。不幸的是 这个功能的实现不是很好,你经常会结束 丢失您对模型所做的自定义,或者必须手动 修复向导尝试应用的一些更改(经常删除 手动编辑xml)。

对于 Code First,您可以重新运行逆向工程流程并拥有它 重新生成你的模型。这在基本场景中工作正常,但你 必须小心您如何自定义模型,否则您的更改 重新生成代码时将恢复。有一些 不编辑就难以应用的自定义 脚手架代码。

因此,EF 7 的推荐方法是将数据库逆向工程为代码,而不是 edmx,以前称为代码第二种方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多