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

如果您使用 PersonID 属性,EF 会执行您想要的操作,而不是创建具有 Name 属性的 Person 对象。但是这种行为仅限于主键,所以我认为不可能使用 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 回答