我正在尝试将表的主键更新为整数自动增量Id。
这是我的实体:
public class Reservation
{
public int Id { get; set; }
public ReservationStatus Status { get; set; }
public string Name { get; set; }
public string CustomerName { get; set; }
...
}这是我的OnModelCreating方法:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
...
modelBuilder.Entity<Reservation>()
.HasKey(e => e.Id)
.Property(e => e.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
...
}这是生成的迁移:
public partial class Reservations_AlterKey_Id_AutoIncrement : DbMigration
{
public override void Up()
{
DropPrimaryKey("dbo.Reservations");
AlterColumn("dbo.Reservations", "Id", c => c.Int(nullable: false, identity: true ));
AlterColumn("dbo.Reservations", "CustomerTaxCode", c => c.String());
AddPrimaryKey("dbo.Reservations", "Id");
}
public override void Down()
{
DropPrimaryKey("dbo.Reservations");
AlterColumn("dbo.Reservations", "CustomerTaxCode", c => c.String(nullable: false, maxLength: 128));
AlterColumn("dbo.Reservations", "Id", c => c.Int(nullable: false));
AddPrimaryKey("dbo.Reservations", new[] { "Id", "DeviceId", "CustomerTaxCode" });
}
}当我尝试插入一个新的预订(在Update之后)时,会引发以下异常:
无法将值NULL插入列'Id‘、表’xxxx.dbo.订票‘中;
这就是我在designer的列属性中看到的(visual studio 2015):

“是身份”仍然是假的。
我怎么才能解决这个问题?
提前感谢
发布于 2017-02-17 13:27:08
不能向Server中的现有列添加标识。
Adding an identity to an existing column
建议的修复方法是创建一个新列。最好的方法是添加一个新的identity列,为它创建一个迁移,然后删除旧列并为此创建一个迁移。这样,EF就不会只是尝试重命名旧的列。
https://stackoverflow.com/questions/42297771
复制相似问题