2016-06-18 14 views
-1

親テーブルのレコードは正常に保存されていますが、子テーブルレコードは保存されず、リポジトリパターンが利用可能なEntity Frameworkを使用してエラーは発生しません。hereエンティティフレームワーク:子テーブルのレコードが挿入されていません

以下は、私のテーブルのサンプルスキーマデザインですが、特別なケースかもしれません。私は一緒に表2と表3に表3に挿入されたという記録がレコードを挿入しないようにしようとすると、テーブルの上に考えると

enter image description here

質問をさらに明確にする必要がある場合は、教えてください。

ありがとうございます!

EDIT以下は1

は、私が一緒に親と子レコードを挿入するために使用していたコードです。

var parent = new Table2() 
    { 
     Table1Id = 1, 
     SecondColumn = 1 
    }; 

    parent.Tables3.Add(new Table3() 
    { 
     Table1Id = 1, 
     SecondColumn = 1, 
     AnotherColumn = 1 
    }); 

    context.Set<Table2>().Attach(parent); 
    context.Entry<Table2>(parent).State = EntityState.Added; 
    context.SaveChanges(); 

EDIT 2

public partial class Table2 
{ 
    public Table2() 
    { 
     this.Tables3 = new HashSet<Table3>(); 
    } 

    public int Table1Id { get; set; } 
    public int SecondColumn { get; set; } 

    public virtual ICollection<Table3> Tables3 { get; set; } 
} 

public partial class Table3 
{ 
    public int Table1Id { get; set; } 
    public int SecondColumn { get; set; } 
    public int AnotherColumn { get; set; } 
} 
+0

は、表1と表2の間に1対1の関係がありますか? –

+0

失敗したコードを(関連する部分)見ることなく答えられません。 –

+0

@BassamAlugili、はい、その1to1の関係。 – ANKIT

答えて

1

次の2つのいずれかを実行する必要があります

  1. 使用

    var parent = new Table2() 
    { 
        Table1Id = 1, 
        SecondColumn = 1 
    }; 
    
    parent.Tables3.Add(new Table3() 
    { 
        Table1Id = 1, 
        SecondColumn = 1, 
        AnotherColumn = 1 
    }); 
    
    context.Set<Table2>().Add(parent); 
    context.SaveChanges(); 
    
を追加する代わりに添付0

この場合、すべてのナビゲーションプロパティも追加されます。

  1. アタッチ後にグラフ全体をペイントします(これで、親テーブルのみに状態が設定されます)。
関連する問題