1

行を追加するたびに変更の保存を呼び出さずに、子テーブルの親テーブルの一意の ID に基づいてテーブルと子テーブルに複数の項目を追加する方法

4

2 に答える 2

3

エンティティをどのように定義したかによって異なります。独立した関連付けを使用している場合は、簡単に機能します。

外部キーの関連付けを使用している場合は、プリンシパル エンティティに一時キーを使用し、それらを依存エンティティの外部キー プロパティに設定する必要があります。親のこれらの一時キーは一意である必要があり (たとえば、負の値を使用)、EF は変更を保存するときにそれらを実際の値に自動的に置き換えます。

于 2012-08-13T19:28:57.840 に答える
0

Entity Framework は最初に親レコードを挿入し、自動インクリメントされた ID 値を使用して子の外部キー値を設定します。SQL サーバーはトランザクションのスコープ内で ID 列をインクリメントし、トランザクションがまだコミットされていない間に新しい値が割り当てられるため、EF はこれを行うことができます。(ロールバック後の新しい挿入により、ロールバックされたトランザクションで割り当てられた値が ID 列にないことがわかります)。

したがって、次のようなことをしても問題ありません

var cust = new Customer { ... };
context.Customers.AddObject(cust); // (or Add() with DbContext).
var ord = new Order  { ... };
ord.OrderLines.Add(new OrderLine  { ... });
cust.Orders.Add(ord);
context.SaveChanges();

...プロパティを設定するためのプレースホルダーです (親 ID はありません) 。

于 2012-08-13T13:02:49.460 に答える