這篇簡單實作Entity Framework的Transaction使用方式
2016.11.08修正
一般寫asp.net時,通常一個DBContext用完即丟
參考:Entity Framework DbContext 物件的生命週期 – Huan-Lin學習筆記
不過我目前是開發Winform專案
User 之間本身就是隔離的獨立個體
因此有時會重複使用DBContext
好處是可以善用快取、追蹤、交易管理等功能
交易處理的參考網頁:Working with Transactions (EF6 Onwards)
簡單的實作方法如下
public void UploadToDB(EFEntities ef)
{
using (DbContextTransaction tran = ef.Database.BeginTransaction())
{
try
{
//暫時取消AutoDetect,提高新增資料的效率
ef.Configuration.AutoDetectChangesEnabled = false;
//這邊自行撰寫,對你的資料庫進行新增、修改、刪除等工作
ef.SaveChanges();
tran.Commit(); //成功SaveChange後,才讓此交易成立
MessageBox.Show("上傳完成");
}
catch (Exception ex)
{
MessageBox.Show("上傳錯誤,將顯示錯誤訊息");
MessageBox.Show(ex.ToString());
tran.Rollback();//SaveChange失敗,取消此交易動作
}
finally
{
ef.Configuration.AutoDetectChangesEnabled = true;
}
}
}
廣告
[C#] 初探Entity Framework (八) – Transaction 有 “ 1 則迴響 ”