[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");
}
切記切記!
參考資料:
自己經驗