c# - 当我尝试保存新记录或更新现有记录时,EF 返回 0000-0000-0000-xxx 作为 Guid?

标签 c# sql-server entity-framework identity-column

我在我的 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/

相关文章:

sql-server - 经典 ASP + TSQL : DateTime Format Issue

asp.net-mvc - 自定义命令 Kendo UI MVC 5 - 错误服务器绑定(bind)

c# - Entity Framework 的 If 条件

c# - LINQ to Entities 不支持指定的类型成员 'Title'

c# - c 将文本文件逐行读入数组并打印

c# - 如何将 ListBox 项绑定(bind)到用户控件?

sql - 由于权限无法执行以下 sql 查询

c# - 如何将 .config 文件或依赖项目包含到主项目的 bin 文件夹中?

c# - 如何在 AutoMapper 中使用 foreach 循环

sql - 为什么我不能简单地添加包含所有列的索引?