[EF]不可巢狀使用using,會造成SaveChanges失敗!!(Nested using will cause the failure of Database.SaveChanges())

  • 639
  • 0

[EF]不可巢狀使用using,會造成SaveChanges失敗

舉例來說你新增了下列這個method更新資料庫:

private void UpdateExeSetup(string yOrN, string ip)
{
	using (MyEntities db = new MyEntities())
	{
		var exeSetup = db.MyTable.Where(a => a.CODE_KIND == "myKind" & a.CODE_ID == "myId").FirstOrDefault();
		exeSetup.Col1 = yOrN;
		exeSetup.Col2 = ip;		
		exeSetup.Update_Date = DateTime.Now;
		db.SaveChanges();
	}
}

好死不死你在呼叫這個method的時候,又另外搞一個using (MyEntities db = new MyEntities()),造成巢狀的using:

using (MyEntities db = new MyEntities())
{
	//anything you want to do
	
	//VVVVV 這一行update是不會成功COMMIT到資料庫的
	UpdateExeSetup("N","192.168.1.1");
}

切記切記!

參考資料:

自己經驗