<ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>


      FreeSql實(shí)現(xiàn)了四種數(shù)據(jù)庫(kù)事務(wù)的使用方法,臟讀等事務(wù)相關(guān)方法暫時(shí)未提供。主要原因系這些方法各大數(shù)據(jù)庫(kù)、甚至引擎的事務(wù)級(jí)別五花八門較難統(tǒng)一。

      事務(wù)用于處理數(shù)據(jù)的一致性,處于同一個(gè)事務(wù)中的操作是一個(gè)UnitOfWork,要么全部執(zhí)行成功,要么全部執(zhí)行失敗。

      指定事務(wù)對(duì)象

      FreeSql 提供了指定事務(wù)對(duì)象的方法,將事務(wù)對(duì)象暴露給外部;
      orm.Update<xxx>().WithTransaction(指定事務(wù)) .Set(a => a.Clicks +
      1).ExecuteAffrows();
      ISelect、IInsert、IUpdate、IDelete,都支持 WithTransaction 方法。

      同線程事務(wù)

      假設(shè)用戶購(gòu)買了價(jià)值100元的商品:

      第一步:扣余額;

      第二步:扣庫(kù)存;

      第一步成功了,到了第二步發(fā)現(xiàn)庫(kù)存不足時(shí),事務(wù)可以回滾,扣余額的數(shù)據(jù)將不生效。
      //假設(shè)已經(jīng)有了其他wiki頁(yè)的IFreeSql聲明 fsql.Transaction(() => { var affrows =
      fsql.Update<User>().Set(a => a.Wealth - 100) .Where(a => a.Wealth >= 100)
      //判斷別讓用戶余額扣成負(fù)數(shù) .ExecuteAffrows(); if (affrows < 1) { throw new
      Exception("用戶余額不足"); //拋出異常,事務(wù)退出 } affrows = fsql.Update<Goods>().Set(a =>
      a.Stock - 1) .Where(a => a.Stock > 0) //判斷別讓用庫(kù)存扣成負(fù)數(shù) .ExecuteAffrows(); if
      (affrows < 1) { throw new Exception("商品庫(kù)存不足"); //拋出異常,回滾事務(wù),事務(wù)退出 //用戶余額的扣除將不生效 }
      //程序執(zhí)行在此處,說明都扣成功了,事務(wù)完成并提交 });
      注意與說明:

      1、數(shù)據(jù)庫(kù)事務(wù)在線程掛載,每個(gè)線程只可開啟一個(gè)事務(wù)連接,重復(fù)開啟會(huì)獲取線程已開啟的事務(wù);

      2、在事務(wù)代碼過程中,不可使用異步方法,包括FreeSql提供的數(shù)據(jù)庫(kù)異步方法,否則線程將會(huì)切換事務(wù)不生效;

      3、fsql.Transaction
      有防止死鎖機(jī)制,60秒事務(wù)未結(jié)束的,將會(huì)被其他線程強(qiáng)行提交(不是回滾),可能造成不完整的事務(wù),但仔細(xì)一想60秒還沒完成的事務(wù)是什么原因呢?如果嫌60秒太少了可以在重載方法的參數(shù)中設(shè)置;

      后續(xù)我們將介紹倉(cāng)儲(chǔ)模式下的工作單元,和 DbContext 事務(wù)使用。

      系列文章導(dǎo)航

      *
      (一)入門 <https://www.cnblogs.com/FreeSql/p/11531300.html>

      *
      (二)自動(dòng)遷移實(shí)體 <https://www.cnblogs.com/FreeSql/p/11531301.html>

      *
      (三)實(shí)體特性 <https://www.cnblogs.com/FreeSql/p/11531302.html>

      *
      (四)實(shí)體特性 Fluent Api <https://www.cnblogs.com/FreeSql/p/11531304.html>

      *
      (五)插入數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531306.html>

      *
      (六)批量插入數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531309.html>

      *
      (七)插入數(shù)據(jù)時(shí)忽略列 <https://www.cnblogs.com/FreeSql/p/11531316.html>

      *
      (八)插入數(shù)據(jù)時(shí)指定列 <https://www.cnblogs.com/FreeSql/p/11531318.html>

      *
      (九)刪除數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531320.html>

      *
      (十)更新數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531321.html>

      *
      (十一)更新數(shù)據(jù) Where <https://www.cnblogs.com/FreeSql/p/11531324.html>

      *
      (十二)更新數(shù)據(jù)時(shí)指定列 <https://www.cnblogs.com/FreeSql/p/11531327.html>

      *
      (十三)更新數(shù)據(jù)時(shí)忽略列 <https://www.cnblogs.com/FreeSql/p/11531334.html>

      *
      (十四)批量更新數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531335.html>

      *
      (十五)查詢數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531339.html>

      *
      (十六)分頁(yè)查詢 <https://www.cnblogs.com/FreeSql/p/11531341.html>

      *
      (十七)聯(lián)表查詢 <https://www.cnblogs.com/FreeSql/p/11531346.html>

      *
      (十八)導(dǎo)航屬性 <https://www.cnblogs.com/FreeSql/p/11531352.html>

      *
      (十九)多表查詢 <https://www.cnblogs.com/FreeSql/p/11531362.html>

      *
      (二十)多表查詢 WhereCascade <https://www.cnblogs.com/FreeSql/p/11531372.html>

      *
      (二十一)查詢返回?cái)?shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531376.html>

      *
      (二十二)Dto 映射查詢 <https://www.cnblogs.com/FreeSql/p/11531381.html>

      *
      (二十三)分組、聚合 <https://www.cnblogs.com/FreeSql/p/11531384.html>

      *
      (二十四)Linq To Sql 語(yǔ)法使用介紹 <https://www.cnblogs.com/FreeSql/p/11531392.html>

      *
      (二十五)延時(shí)加載 <https://www.cnblogs.com/FreeSql/p/11531395.html>

      *
      (二十六)貪婪加載 Include、IncludeMany、Dto、ToList
      <https://www.cnblogs.com/FreeSql/p/11531404.html>

      *
      (二十七)將已寫好的 SQL 語(yǔ)句,與實(shí)體類映射進(jìn)行二次查詢
      <https://www.cnblogs.com/FreeSql/p/11531416.html>

      *
      (二十八)事務(wù)

      *
      (二十九)Lambda 表達(dá)式 <https://www.cnblogs.com/FreeSql/p/11531425.html>

      *
      (三十)讀寫分離 <https://www.cnblogs.com/FreeSql/p/11531430.html>

      *
      (三十一)分區(qū)分表 <https://www.cnblogs.com/FreeSql/p/11531435.html>

      *
      (三十二)Aop <https://www.cnblogs.com/FreeSql/p/11531471.html>

      *
      (三十三)CodeFirst 類型映射 <https://www.cnblogs.com/FreeSql/p/11531543.html>

      *
      (三十四)CodeFirst 遷移說明 <https://www.cnblogs.com/FreeSql/p/11531550.html>

      *
      (三十五)CodeFirst 自定義特性 <https://www.cnblogs.com/FreeSql/p/11531576.html>

      友情鏈接
      ioDraw流程圖
      API參考文檔
      OK工具箱
      云服務(wù)器優(yōu)惠
      阿里云優(yōu)惠券
      騰訊云優(yōu)惠券
      京東云優(yōu)惠券
      站點(diǎn)信息
      問題反饋
      郵箱:[email protected]
      QQ群:637538335
      關(guān)注微信

        <ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>
          啊灬啊灬啊灬高潮来了 | 96国产精品视频 | 日本黄色大片日本美女 | 成人性生交大片免费看1一2 | 国产人妖视频一区二区在线 | 国内精品久久久久影院男同志 | 国产91综合一区在线观看 | 插逼视频免费 | 国产全肉乱妇杂乱视频1 | 国产成人综合视频 |