2010-12-20 6 views
0

Foo、Bar、Foobの3種類のEDMがあります。 FoobはFooのサブクラスです。 FooにはBarエンティティのコレクションがあります。 BarにはFooエンティティのコレクションがあります。私はコレクションに新しいFooオブジェクトを追加したいと思います。Barオブジェクトと関連するFoobオブジェクトも追加したいと思います。次のコードが動作するであろうと、このような:Entity Frameworkのオブジェクトコンテキストにオブジェクトツリーを添付する

Foo foo = new Foo(){Name = "Foo"}; 
using(var ctx = new EntityContext()) 
{ 
ctx.Foo.Attach(foo); 
Bar bar = new Bar(); 
bar.Items.Add(new Foob(){Name="Foob1"}; 
bar.Items.Add(new Foob(){Name="Foob2"}; 
foo.Bars.Add(bar); 
ctx.SaveChanges(); 
} 

上記のコードは私に以下の例外与えしかし:

System.Data.SqlClient.SqlExceptionを:オブジェクトのdbo.tblFooに重複するキー行を挿入できませんユニークなインデックスを持つ。

+0

私はあなたの変更が保存された後に、あなたがfooオブジェクトIDを作成したことを示唆しているので、 'ctx.SaveChanges();'の後に接続しようとします(autoincrementがtrueに設定されている場合)。 –

答えて

1

SQLプロファイラでこれに対して実行されたSQLコードをチェックしてみてください。あなたはFoobエンティティのためにautoincrementを設定するのを忘れているかもしれません。

関連する問題