我有以下POCO课程
public class Account
{
[Key,DatabaseGenerated(DatabaseGenerationOption.Identity)]
public string AccountId { set; get; }
public string FirstName { set; get; }
public string LastName { set; get; }
public string Email { set; get; }
}
创建数据库时出现以下异常
Identity column 'AccountId' must be of data type int, bigint, smallint, tinyint, or decimal or numeric with a scale of 0, and constrained to be nonnullable.
答案 0 :(得分:8)
你不应该:
[Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid AccountId { set; get; }
答案 1 :(得分:3)
杰夫的回答是对的。给你一点小费。使用EF6我编写了下一个配置,以便设置名称为“Id”的所有字段并输入“Guid”作为标识。
modelBuilder.Properties<Guid>()
.Where(info => info.Name.ToLower()== "id")
.Configure(configuration => configuration.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity));
所以我不必每次都写[DatabaseGenerated(DatabaseGenerationOption.Identity)]
。
答案 2 :(得分:0)
听起来你必须将您的AccountId属性从字符串更新为异常中提到的数据类型之一:
int,bigint,smallint,tinyint,或小数或数字,其标度为0,并且约束为不可为空
为什么它现在是一个字符串?