У меня есть аналогичная проблема.Entity Framework/EF4: множественные вставки связанных объектов в транзакционном
Я хочу сделать две вставки в одном и том же конвертере. Объекты связаны между собой и имеют отношения FK между ними, но по нескольким причинам я не хочу их связывать через свойство навигации, но только по идентификатору.
Это упрощение, что я, что я хочу сделать:
Order o = new Order();
OrderDetails d = new OrderDetails();
new Repository().SaveNew(o, d);
class Repository{
void SaveNew(Order o, OrderDetails d){
using (TransactionScope transaction = new TransactionScope())
{
_context.Connection.Open();
// order
_context.Orders.ApplyChanges(o);
_context.SaveChanges();
// details
d.OrderID = o.ID;
_context.OrderDetails.ApplyChanges(d);
_context.SaveChanges(); <--- UpdateException
_context.Connection.Close();
transaction.Complete();
}
}
}
Проблема заключается в том, что я получаю UpdateException, потому что оценка FK терпит неудачу. Я попытался удалить отношения FK и запустить один и тот же фрагмент кода, и он работал нормально, и оба объекта имели нужные свойства. Так почему же этот подход терпит неудачу? И как это сделать? Опять же, я не хочу присоединяться к энтитам через их свойства навигации.
Спасибо!