我有類似的問題。實體框架/ EF4:在事務處理中插入多個相關實體
我想在同一個transactionscope中創建兩個插入。這些對象是相關的,並且它們之間具有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關係並運行完全相同的代碼,並且它運行良好,並且兩個對象都具有正確的屬性集。那麼爲什麼這種方法會失敗呢?而應該怎麼做呢?同樣,我不想通過導航屬性附加這些實體。
謝謝!