中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

將不確定變為確定~transactionscope何時提升為分(fen)布式(shi)事務~SQL2005與SQL2008不同

回到目錄

Transactionscope何時(shi)(shi)被提升為分布(bu)式事務,即時(shi)(shi)要(yao)觸(chu)發msdtc服(fu)務,這個(ge)問題與數據(ju)庫版本(ben)有關,在(zai)前面的文章(zhang)中,我的MSTDC系列出現了(le)多個(ge)版本(ben),有一點沒有說清楚(chu),測(ce)試的環境不(bu)同,所以產生了(le)多個(ge)版本(ben),下面我做一下總結:

第二十六回   將不確定變為確定~transactionscope何時提升為分布式事務?

第二十七(qi)回   將不確定變為確定~transactionscope何時提升為分布式事務~續

第二十八回   將不確定變為確定~transactionscope何時提升為分布式事務~再續(避免引起不必要的MSDTC)

第二十九回   將不確定變為確定~transactionscope何時提升為分布式事務~大結局

 

一 數據庫與WWW服務器不在一臺電腦,數據庫為SQL2005,一個savechanges,才不會提升為MSDTC,這在之前已經做了證明,將不確定變為確定~transactionscope何時提升為分布式事務~大結局

二 數據庫與WWW服務器不在一臺電腦,數據庫為SQL2008,多個數據上下文,多個savechanges,它也不會提升為MSDTC,這個比較強,原來MSDTC還與數據庫版本有關,呵呵 ,將不確定變為確定~transactionscope何時提升為分布式事務~續

下面是(shi)對SQL2008上做的一個測試

  using (TransactionScope trans = new TransactionScope())
            {
                try
                {

                    dbs.Entry<Classroom_Info>(entity);
                    dbs.Set<Classroom_Info>().Add(entity);
                    dbs.SaveChanges();//dbs上下文的SaveChanges

                    //綁定(ding)學生
                    entity.User_Classroom_R.ToList().ForEach(i =>
                    {
                        i.ClassroomInfoID = entity.ClassroomInfoID;
                    });

                    //綁定學生(sheng)
                    entity.User_Classroom_R.ToList().ForEach(i =>
                    {
                        db.Entry<User_Classroom_R>(i);
                        db.Set<User_Classroom_R>().Add(i);
                    });
                    db.SaveChanges();//db上下文的(de)savechanges

                    trans.Complete();//提交事(shi)務
                }
                catch (Exception)
                {
                    trans.Dispose();//出現異(yi)常,事務手動(dong)釋(shi)放
                    throw;
                }
            }

總結:

對于SQL2008數據庫來說,只有不同的數據庫時,才會認為它是一個分布式事務,即SQL鏈接串不同時,才會被提升為MSDTC。

 回到目錄

 

 

posted @ 2013-10-29 10:35  張占嶺  閱讀(982)  評論(0)    收藏  舉報