当我尝试保存新记录或更新现有记录时,EF返回0000-0000-0000-xxx作为Guid
本文关键字:记录 EF 返回 Guid 作为 0000-0000-0000-xxx 保存 新记录 更新 | 更新日期: 2023-09-27 18:06:35
我在c#项目中使用EF4。我面临的问题是,当我试图保存一条记录时,我得到一个Primary Key Violation,并且PK值为"0000-0000-0000-xxx"。根据我的猜测,EF不能识别IsIdentity标志并生成一个指导值。在我的SQL Server数据库中,我为我的表指定了一个PK(uniqueidentifier>guid),并将其设置为IdentityColumn,因此我希望它能够传递到我的项目中,因为guid是在SQL Server中生成的。有没有办法克服这个bug?
您必须在EF模型中指定您的Guid
ID作为Identity。在EF 4.1:
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
(与int
id相反,Guid
id默认不是标识。)如果使用此模型创建数据库,EF将创建一个默认值为newid()
的列。
在EF 4.0中,你可以进入模型设计器,在设计器中标记你的Id属性,打开属性窗口,然后将StoreGeneratedPattern
设置为Identity
。
而不是:
public System.Guid ID { get; set; }
试试这个:
private System.Guid _id;
public System.Guid ID
{
get
{
if (_id == null || _id == Guid.Empty)
_id = Guid.NewGuid();
return _id;
}
set
{
_id = value;
}
}