1

私は2つのテーブルを持っています:

Person table - 
       PersonID
       Name (unique index).
Orders table - 
       OrderID
       Price
       Item
       PersonID (FK)           

注文のリストを挿入する注文テーブルに(EFを使用して)挿入したい(すべて同じ人で、私は人の名前しか知らない)、その人が人のテーブルに存在しない場合は、彼はそれに挿入され、彼は存在します。注文には適切な人が入力されます。冗長な呼び出しであるため、最初にその人がpersonテーブルにあるかどうかを照会したくありません。変更の保存中にのみ追加し、事前にサーバーにクエリを実行する可能性はありますか?そんな感じ:

Person thePerson = new Person {Name = "knownName"};
foreach (var order in orders)
{
   context.Orders.AddObject(new Order
   {
      Price = order.Price,
      Item = order.ItemName,
      Person = thePerson
   });
}
context.SaveChanges();
4

1 に答える 1

0

Name 属性を使用して Person オブジェクトを作成する代わりに、PersonID 属性を使用すると、EF は必要な処理を実行します。ただし、この動作は主キーに限定されているため、これを実現するために Name を使用することはできないと思います。

Person thePerson = new Person {PersonID = Id}; // Id is either previously fetched or a newly created one
foreach (var order in orders)
{
   context.Orders.AddObject(new Order
   {
      Price = order.Price,
      Item = order.ItemName,
      Person = thePerson
   });
}
context.SaveChanges();
于 2012-05-24T13:48:53.603 に答える