1

コードファーストのEntity Framework 5を使用しています。

次のようなPOCOがあります。

public class Order
{
  public int Id { get; set; }
  public string Name { get; set; }
  public virtual Status Status { get; set; }

  public Order()
  {
    this.Status = new Status() { Id = 1 }
  }
}

これは次のように流暢にマッピングされます。

public class OrderMap : EntityTypeConfiguration<Order>
{
  public OrderMap()
  {
    ToTable("Order");
    HasKey(x => x.Id);

    Property(x => x.Id);
    Property(x => x.Name).IsRequired();

    HasRequired(x => x.Status)
      .WithMany(x => x.Orders)
      .Map(x => x.MapKey("StatusId"));
  }
}

データベースでは、Orderテーブルのデフォルト値が にStatusId設定されてい1ます。

ただし、新しい を追加すると、次のOrderエラーが発生します。

PRIMARY KEY 制約 'Status_PK' に違反しています。オブジェクト 'dbo.Status' に重複するキーを挿入できません。重複キーの値は (1)

ctor で割り当てを削除すると、Status代わりに次のようになります。Order

値 NULL を列 'StatusId'、テーブル 'MyDatabase.dbo.Order' に挿入できません。列はヌルを許可しません。INSERT の失敗

外部キー プロパティの既定値を設定するにはどうすればよいですか?

4

1 に答える 1