EF 6 Code First - 整数主键 - 无法将值 NULL 插入列

EF 6 Code First - Integer primary key - Cannot insert the value NULL into column

我正在尝试将 table 的主键更新为整数自动增量 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" });
    }
}

当我尝试插入新的预订(在更新数据库之后)时,抛出以下异常:

Cannot insert the value NULL into column 'Id', table 'xxxxx.dbo.Reservations';

这是我在设计师 (visual studio 2015) 的列属性中看到的内容:

"Is Identity" 仍然是错误的。

我该如何解决这个问题?

提前致谢

您不能将标识添加到 SQL 服务器中的现有列。

Adding an identity to an existing column

建议的修复方法是创建一个新列。最好的方法是添加一个新的标识列,为其创建一个迁移,然后删除旧列并为其创建一个迁移。这样 EF 就不会尝试重命名旧列。