0
使用實體框架(4.3.1.0)處理項目。我試圖弄清楚如何讓我的代碼作爲一個事務工作,但對我來說,好像我的模型在事務失敗後不會更新。實體框架 - 模型在事務失敗後不會更新
讓我告訴你:
using (TransactionScope trans = new TransactionScope())
{
_database.Units.Add(new Unit{ ... });
var a = false;
if (a)
{
trans.Complete();
Refresh();
}
}
Refresh();
我的經驗是,TransactionScope的完成之後,它不回滾到之前的狀態。當我運行刷新方法時,我循環遍歷單元中的所有項目,並將值插入到一個ObservableCollection中,並將其顯示在WPF窗口中的屏幕上。
這種機制適用於我成功執行事務的時候,但是當我運行上面的代碼時,網格用新添加的單元進行更新,但是在事務之後運行Refresh之後它不會消失。
我有我做得fundamentaly錯在這裏:)
好的。這解釋了很多。我能否以某種方式告訴EF我需要爲全部或某些特殊表執行與數據庫的同步?我的意思是,如果我可以刷新_database.Units表,這將是完美的。 – AndersLindas
不是。在您的代碼示例中,在回滾的情況下,您可以使用[OverwriteChanges](http://msdn.microsoft.com/zh-cn/library/system.data)分離新添加的實體並重新查詢所有單元的數據庫.objects.mergeoption.aspx)選項。 – cynic
謝謝。我想我現在可以解決這個問題。另外,我使用Code First和DbContext代替ObjectContext。但是找到了有助於訪問ObjectContext的[鏈接](http://thedatafarm.com/blog/data-access/accessing-objectcontext-features-from-ef-4-1-dbcontext/)。 – AndersLindas