自动生成的主键(Guid)实体框架CTP5

时间:2011-04-10 09:10:10

标签: entity-framework entity-framework-ctp5

我有以下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.

3 个答案:

答案 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,并且约束为不可为空

为什么它现在是一个字符串?