我有以下内容:
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?
答案 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; }
}