0

私はこのように好きな4つのテーブルを持っています:

public class Table1
{
 public int Id {get;set;}
 public string Name {get;set;}
}

public class Table2
{
 public int Id {get;set;}
 public string Name {get;set;}
 public int Table1Id {get;set;}
 public virtual Table1 {get; set;}
}

public class Table3
{
 public int Id {get;set;}
 public string Name {get;set;}
 public int Table2Id {get;set;}
 public virtual Table2 {get; set;}
}

public class Table4
{
 public int Id {get;set;}
 public string Name {get;set;}
 public int Table3Id {get;set;}
 public virtual Table3 {get; set;}
}

そして、私の流暢なAPIは次のようになります。

modelBuilder.Entity<Table2>().HasRequired(x => x.Table1).WithMany().WillCascadeOnDelete(false);
modelBuilder.Entity<Table3>().HasRequired(x => x.Table2).WithMany().WillCascadeOnDelete(false);
modelBuilder.Entity<Table4>().HasRequired(x => x.Table3).WithMany().WillCascadeOnDelete(false);

テーブルをシードしようとすると、次のエラーが発生します。

INSERTステートメントがFOREIGNKEY制約"FK_Table4_Table3_Table3Idと競合しました。競合はデータベースMyDb、テーブル" dbo.Table3 "、列'Id'で発生しました。ステートメントは終了しました。"

どこが悪いのかわからない

4

1 に答える 1

1

これを行う...

modelBuilder.Entity<Table2>()
    .HasRequired(t => t.Table1)
    .WithMany() // t => t.AllTable2s)
    .HasForeignKey(t => t.Table1ID);

...そして何よりもmake it compile!:)(例えばpublic virtual Table1 {get; set;}public virtual Table1 Table1 {get; set;}

于 2012-04-15T17:39:07.790 に答える