0
我試圖更新我的表的主鍵是一個整數自動增量ID。EF 6 Code First - 整數主鍵 - 不能將值NULL插入列
這是我的實體:
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" });
}
}
當我嘗試插入新保留(在更新數據庫之後)以下異常i s拋出:
無法將值NULL插入到'Id'列'xxxxx.dbo.Reservations'列中;
這是我在列屬性看到設計師(視覺工作室2015年):
「是一種身份」 仍然是假的。
我該如何解決這個問題?
在此先感謝
您是否嘗試將這些屬性添加到'Reservation'類中的'Id'屬性而不是[fluent](https://msdn.microsoft.com/zh-cn/data/jj591617.aspx)樣式:'[DataMember,Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]''。您是否嘗試刪除表格以強制進行娛樂? –
是的,仍然是一樣的。我注意到,如果我刪除所有遷移,重新創建一個遷移,然後重新創建數據庫標識規範是預期的。我想避免重新創建數據庫,因爲已經有一個生產版本,我不會刪除數據:(任何建議? – Androidian
而不是重載OnModelCreation,請嘗試添加[Key]屬性到您的主鍵,看看是否這是有效的,這將有助於縮小可能的問題。 – Licht