C# 当我尝试保存新记录或更新现有记录时,EF是否返回0000-0000-0000-xxx作为Guid?
我在我的C#项目中使用EF4。我面临的问题是,当我试图保存一条记录时,我得到一个主键冲突,PK值是“0000-0000-0000-xxx”。据我猜测,EF无法识别IsIdentity标志并生成guid值。在我的表的SQL Server数据库中,我指定了一个PK(uniqueidentifier>guid),并将其设置为IdentityColumn,因此我希望它能够以这种方式传递到我的项目中,因为guid是在SQL Server中生成的。有没有办法克服这个错误?而不是:C# 当我尝试保存新记录或更新现有记录时,EF是否返回0000-0000-0000-xxx作为Guid?,c#,sql-server,entity-framework,identity-column,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中生成的。有没有办法克服这个错误?而不是: public System
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;
}
}
您必须将
Guid
ID指定为EF模型中的标识。在EF 4.1中:
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
(Guid
id默认情况下不是身份,与int
id相反。)
如果使用此模型创建数据库,EF将创建一个默认值为newid()
的列
在EF 4.0中,您可以转到模型设计器,在设计器中标记Id属性,打开属性窗口,然后将
StoreGeneratedPattern
设置为Identity\u Id
不能为null
,因为它是一种值类型。唯一可以与null进行比较的值类型是Nullable
。感谢您提供的信息。设置storegeneratedpattern可以修复它。