我在我的 C# 项目中使用 EF4。我面临的问题是,当我尝试保存记录时,我得到主键违规并且 PK 值为“0000-0000-0000-xxx”。根据我的猜测,EF 无法识别 IsIdentity 标志并生成 guid 值。在我的表的 SQL Server 数据库中,我指定了一个 PK(uniqueidentifier>guid) 并将其设置为 IdentityColumn,因此我希望这会传递到我的项目中,因为 guid 是在 SQL Server 中生成的。有没有办法克服这个错误?
问问题
2818 次
2 回答
10
您必须Guid
在 EF 模型中将您的 ID 指定为身份。在 EF 4.1 中:
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
(Guid
与 Ids 相比,默认情况下 Ids 不是身份int
。)如果您使用此模型创建数据库,EF 将创建一个默认值为 的列newid()
。
在 EF 4.0 中,您可以转到模型设计器,在设计器中标记您的 Id 属性,打开属性窗口,然后设置StoreGeneratedPattern
为Identity
.
于 2011-08-24T18:55:47.743 回答
3
而不是这个:
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;
}
}
于 2011-08-24T16:51:35.453 回答