C# 实体框架键属性未将列设置为标识

C# 实体框架键属性未将列设置为标识,c#,entity-framework,C#,Entity Framework,我有以下资料: public class FieldBookingMessageThread : MessageThread, ISoftDeletable, ITimeStamps, ICreatedBy { [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int FieldBookingMessageThreadID { get; set; } } MessageThread类中没有任何有趣

我有以下资料:

public class FieldBookingMessageThread : MessageThread, ISoftDeletable, ITimeStamps, ICreatedBy
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int FieldBookingMessageThreadID { get; set; }
}
MessageThread类中没有任何有趣的内容

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

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

AlterColumn( "dbo.FieldBookingMessageThreads", "FieldBookingMessageThreadID", c => c.Int( nullable: false, identity: true ) );
它运行正常,没有错误,但不会将列更改为identity

我可能做错了什么

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


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

您需要设置
[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; }
}