我在我的 C# 项目中使用 EF4。我面临的问题是,当我尝试保存记录时,出现主键冲突且 PK 值为“0000-0000-0000-xxx”。根据我的猜测,EF 无法识别 IsIdentity 标志并生成 guid 值。在我的表的 SQL Server 数据库中,我指定了一个 PK(uniqueidentifier>guid) 并将其设置为 IdentityColumn,因此我希望它能传递到我的项目中,因为 guid 是在 SQL Server 中生成的。有没有办法克服这个错误?
最佳答案
您必须在 EF 模型中将您的 Guid
ID 指定为身份。在 EF 4.1 中:
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
(Guid
ID 在默认情况下不是身份,与 int
ID 不同。)
如果您使用此模型创建数据库,EF 将创建一个默认值为 newid()
的列。
在 EF 4.0 中,您可以转到模型设计器,在设计器中标记您的 Id 属性,打开属性窗口,然后将 StoreGeneratedPattern
设置为 Identity
。
关于c# - 当我尝试保存新记录或更新现有记录时,EF 返回 0000-0000-0000-xxx 作为 Guid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7174065/