Добавить в коллекцию существующий идентификатор - PullRequest
0 голосов
/ 03 октября 2011

У меня есть коллекция клиентов с заказами. У меня есть несколько идентификаторов заказов, которые мне нужно добавить в новый экземпляр Customer, например:

var customer = new Customer();
customer.Orders.Add(new Order() { Id = 1 });
customer.Orders.Add(new Order() { Id = 2 });
customer.Orders.Add(new Order() { Id = 3 });

Возможно ли это без получения подходящих экземпляров Заказа?

1 Ответ

2 голосов
/ 03 октября 2011

Да, это возможно, но вы должны сделать это в правильном порядке.Самый простой способ:

var order1 = new Order { Id = 1 };
context.Orders.Attach(order1); // Now context knows the order and it tracks it as unchanged

var customer = new Customer();
context.Customers.AddObject(customer); // Now context knows the customer and it tracks it as a new

customer.Orders.Add(order1); // Now context knows about new relation between new customer and existing order

Если вы сделаете это, как показано в примере, вы позвоните:

context.Customers.AddObject(customer);

, и контекст отследит клиента и все связанные заказы как новыйпоэтому вам придется вручную изменять состояние всех заказов на неизменные, чтобы избежать дублирования вставок:

foreach (var order in customer.Orders)
{
   if (order.Id != 0)
   {
       context.ObjectStateManager.ChangeObjectState(order, EntityState.Unchagned);
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...