实体框架Key属性未将列设置为标识

时间:2015-04-28 22:02:09

标签: c# entity-framework

我有以下内容:

public class FieldBookingMessageThread : MessageThread, ISoftDeletable, ITimeStamps, ICreatedBy
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int FieldBookingMessageThreadID { get; set; }
}

MessageThread类没有任何兴趣。

当我从Package Manager控制台运行数据迁移时,它似乎没有将Identity:true放在该列上。

我为该列创建了自定义数据迁移:

AlterColumn( "dbo.FieldBookingMessageThreads", "FieldBookingMessageThreadID", c => c.Int( nullable: false, identity: true ) );

它运行正常,没有错误,但不会将列更改为标识?

我可能做错了什么?

快速解决方案显然不是正确的解决方案:

我必须删除所有迁移。创建一个全新的迁移。删除我的数据库,运行迁移...然后一切似乎都没问题。为了以防万一,我保留了旧的迁移,听起来像个bug?

1 个答案:

答案 0 :(得分:0)

您需要设置[DatabaseGenerated(DatabaseGeneratedOption.Identity)]属性

public class FieldBookingMessageThread : MessageThread, ISoftDeletable, ITimeStamps, ICreatedBy
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int FieldBookingMessageThreadID { get; set; }
}

或者

public class FieldBookingMessageThread : MessageThread, ISoftDeletable, ITimeStamps, ICreatedBy
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int FieldBookingMessageThreadID { get; set; }
}