【问题标题】:Unable to update the EntitySet 'ItemRankList' because it has a DefiningQuery and no <UpdateFunction> element exists无法更新 EntitySet 'ItemRankList',因为它有一个 DefiningQuery 并且不存在 <UpdateFunction> 元素
【发布时间】:2011-01-31 06:12:31
【问题描述】:

任何想法为什么 LINQ 中的实体框架会出现以下奇怪的错误:

无法更新 EntitySet 'ItemRankList',因为它有一个 DefiningQuery 并且元素中不存在支持当前操作的元素。

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    我猜我也应该问一下上下文...你是如何使用 linq 的?

    您是否在表上定义了主键

    如果不添加密钥并更新 EF 模型。

    【讨论】:

    • 好.. 感谢重播!我解决了这个问题!!!问题是没有在数据库表中设置复合主键,因为键是在导致此错误的实体关系中定义的。正如 Nix 所说,通过 2 个步骤修复.. > 创建复合 P-Key > 使用新的 DB 模式更新实体
    • 我遇到了类似的问题,即使在更新我的模型以包含主键之后,从数据库更新模型似乎也没有解决它。但是,从模型中删除实体并从数据库中重新添加它确实对其进行了排序。另一个 EF 模型没有从 DB 故事中正确更新!
    • 同样的问题,我没有在表的列上设置主键。设置主键后,我更新了 EF 模型并修复了它。
    【解决方案2】:

    同意接受的答案。 只是提供它背后的原因......

    当使用没有主键的表完成 EF 映射时,它被视为视图和视图是逻辑实体,无法更新。

    因此,要么在你的表中添加缺少的主键,要么将它们视为 View 并且不对它们执行任何更新操作。

    【讨论】:

      【解决方案3】:

      在 .edmx 文件中添加主键,删除实体并再次添加。清理并编译解决方案。

      【讨论】:

        猜你喜欢
        • 2011-11-26
        • 2012-09-01
        • 1970-01-01
        • 2012-11-30
        • 2013-02-25
        • 1970-01-01
        • 2023-04-07
        • 2012-01-30
        • 2010-12-08
        相关资源
        最近更新 更多