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

EF架構~TransactionScope與(yu)SaveChanges的(de)關系

回到目錄

TransactionScope是.net環境下的事務,可以提升為分布式事務,這些知識早在很久前就已經說過了,今天不再說它,今天主要談談Savechanges()這個方法在TransactionScope塊里的作用,我們知識TransactionScope只有顯示的提交動作而沒有回滾,那么它如何實現回滾呢?事實上,.net從來就是一門不啰嗦的語言,它把回滾理解為:"當程序出現問題時,就是回滾的時候"!

提交出現問題(ti)的表現?

  1. 就是throw出來的異常
  2. 當前你可以不加try...catch塊,也會throw出來
  3. 當你加了try...catch,而又沒有throw出來,那你的事務中的回滾就失效了,即數據的一致性沒有保正了

所(suo)以,如果(guo)你要封(feng)裝(zhuang)自己(ji)的(de)savechanges方法,就必(bi)須(xu)把(ba)異常顯示(shi)的(de)拋出(chu)來,像這樣的(de)代碼是正常的(de)

       protected virtual void SaveChanges()
        {
            try
            {
                Db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                throw new DbUpdateConcurrencyException("Lind.DDD框(kuang)架(jia)在更新(xin)時引起了樂(le)觀并發,后修(xiu)改的數據不會被保存");
            }
            catch (DbEntityValidationException ex)
            {
                List<string> errorMessages = new List<string>();
                foreach (DbEntityValidationResult validationResult in ex.EntityValidationErrors)
                {
                    string entityName = validationResult.Entry.Entity.GetType().Name;
                    foreach (DbValidationError error in validationResult.ValidationErrors)
                    {
                        errorMessages.Add(entityName + "." + error.PropertyName + ": " + error.ErrorMessage);
                    }
                }
                throw;
            }
            catch (Exception)
            {
                throw;
            }

        }

而事實上,我們在UI層(ceng)或(huo)者(zhe)應用層(ceng),可(ke)以把異常(chang)消化(hua),因為(wei)你(ni)的(de)頁面可(ke)能(neng)不希望看到500的(de)錯誤(wu)(wu),當然(ran)你(ni)也可(ke)以設置全(quan)局的(de)500,404,403等(deng)錯誤(wu)(wu)頁!

像這樣代碼,把異常消化,對事務是沒有影響的,事務能否回滾,只與saveChanges()有關!

            try
            {
                InsertData();
            }
            catch (Exception ex)
            {

                Console.WriteLine(ex.Message);
            }

感謝各位的閱讀!

回到目錄

posted @ 2017-05-25 14:29  張占嶺  閱讀(3910)  評論(0)    收藏  舉報