【问题标题】:Generating Entity Keys生成实体密钥
【发布时间】:2010-03-19 19:33:16
【问题描述】:

我第一次对 Entity Framework 4 感到失望。事实证明,当 SQL CE 与 EF4 一起使用时,does not support autogenerated primary keys。我从 OnjectContext.SaveChanges() 收到 System.Data.UpdateException 并带有以下消息:

SQL Server Compact 不支持服务器生成的键和服务器生成的值。

所以,现在我必须为我的实体手动生成密钥。假设我想使用自动递增的整数键,那么在使用实体框架时生成和跟踪键的最佳方法是什么?感谢您的帮助。

【问题讨论】:

    标签: entity-framework sql-server-ce entity-framework-4


    【解决方案1】:

    您问题中链接的底部是一个建议的解决方案。请参阅SQL Compact, Identity Columns and Entity Framework,也许您可​​能想要实现一种类似于概述的扩展方法。

    【讨论】:

    • 好答案,但不幸的是,链接页面上的代码仅适用于未过滤的实体集,因为扩展方法返回实体集中的最大 id。因此,我最终使用 GUID 作为实体键。我使用此构造函数代码为每个实体创建了一个部分类:this.ID = Guid.NewGuid()
    【解决方案2】:

    我不认为大卫的想法是个好主意,但是,我别无选择。 或许 CE 会在下一版本支持自动生成的主键。

    【讨论】:

    • 实际上,SQL Compact 确实支持自动生成的键——显然,EF4 不支持来自 SQL Compact 的自动生成的键。我原来的问题中链接的博客文章解释了这个问题。
    猜你喜欢
    • 2011-02-12
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 2015-04-01
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多