將不確定變為確定~transactionscope何時提升為分散式事務~SQL2005與SQL2008不同
阿新 • • 發佈:2018-12-30
Transactionscope何時被提升為分散式事務,即時要觸發msdtc服務,這個問題與資料庫版本有關,在前面的文章中,我的MSTDC系列出現了多個版本,有一點沒有說清楚,測試的環境不同,所以產生了多個版本,下面我做一下總結:
一 資料庫與WWW伺服器不在一臺電腦,資料庫為SQL2005,一個savechanges,才不會提升為MSDTC,這在之前已經做了證明,將不確定變為確定~transactionscope何時提升為分散式事務~大結局
二 資料庫與WWW伺服器不在一臺電腦,資料庫為SQL2008,多個數據上下文,多個savechanges,它也不會提升為MSDTC,這個比較強,原來MSDTC還與資料庫版本有關,呵呵 , 將不確定變為確定~transactionscope何時提升為分散式事務~續
下面是對SQL2008上做的一個測試
using (TransactionScope trans = new TransactionScope()) { try { dbs.Entry<Classroom_Info>(entity); dbs.Set<Classroom_Info>().Add(entity); dbs.SaveChanges();//dbs上下文的SaveChanges //繫結學生 entity.User_Classroom_R.ToList().ForEach(i => { i.ClassroomInfoID = entity.ClassroomInfoID; }); //繫結學生 entity.User_Classroom_R.ToList().ForEach(i => { db.Entry<User_Classroom_R>(i); db.Set<User_Classroom_R>().Add(i); }); db.SaveChanges();//db上下文的savechanges trans.Complete();//提交事務 } catch (Exception) { trans.Dispose();//出現異常,事務手動釋放 throw; } }