У меня похожая проблема.
Я хочу сделать две вставки в одну транзакцию.Объекты связаны между собой и имеют отношения FK между ними, но по нескольким причинам я не хочу связывать их через свойство навигации, а только по ID.
Это упрощение того, что я хочувыполнить:
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 и запустить точно такой же кусок кода, и он работал нормально, и у обоих объектов были установлены правильные свойства.Итак, почему этот подход терпит неудачу?И как это сделать вместо этого?Опять же, я не хочу прикреплять объекты через их свойства навигации.
Спасибо!