FreeSql (二十八)事務

FreeSql實現了四種數據庫事務的使用方法,臟讀等事務相關方法暫時未提供。主要原因系這些方法各大數據庫、甚至引擎的事務級別五花八門較難統一。

事務用于處理數據的一致性,處于同一個事務中的操作是一個UnitOfWork,要么全部執行成功,要么全部執行失敗。

指定事務對象

FreeSql 提供了指定事務對象的方法,將事務對象暴露給外部;

orm.Update<xxx>().WithTransaction(指定事務).Set(a => a.Clicks + 1).ExecuteAffrows();

ISelect、IInsert、IUpdate、IDelete,都支持 WithTransaction 方法。

同線程事務

假設用戶購買了價值100元的商品:

第一步:扣余額;

第二步:扣庫存;

第一步成功了,到了第二步發現庫存不足時,事務可以回滾,扣余額的數據將不生效。

//假設已經有了其他wiki頁的IFreeSql聲明
fsql.Transaction(() => {var affrows = fsql.Update<User>().Set(a => a.Wealth - 100).Where(a => a.Wealth >= 100)//判斷別讓用戶余額扣成負數.ExecuteAffrows();if (affrows < 1) {throw new Exception("用戶余額不足");//拋出異常,事務退出}affrows = fsql.Update<Goods>().Set(a => a.Stock - 1).Where(a => a.Stock > 0)//判斷別讓用庫存扣成負數.ExecuteAffrows();if (affrows < 1) {throw new Exception("商品庫存不足");//拋出異常,回滾事務,事務退出//用戶余額的扣除將不生效}//程序執行在此處,說明都扣成功了,事務完成并提交
});

注意與說明:

1、數據庫事務在線程掛載,每個線程只可開啟一個事務連接,重復開啟會獲取線程已開啟的事務;

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

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

后續我們將介紹倉儲模式下的工作單元,和 DbContext 事務使用。

系列文章導航

  • (一)入門

  • (二)自動遷移實體

  • (三)實體特性

  • (四)實體特性 Fluent Api

  • (五)插入數據

  • (六)批量插入數據

  • (七)插入數據時忽略列

  • (八)插入數據時指定列

  • (九)刪除數據

  • (十)更新數據

  • (十一)更新數據 Where

  • (十二)更新數據時指定列

  • (十三)更新數據時忽略列

  • (十四)批量更新數據

  • (十五)查詢數據

  • (十六)分頁查詢

  • (十七)聯表查詢

  • (十八)導航屬性

  • (十九)多表查詢

  • (二十)多表查詢 WhereCascade

  • (二十一)查詢返回數據

  • (二十二)Dto 映射查詢

  • (二十三)分組、聚合

  • (二十四)Linq To Sql 語法使用介紹

  • (二十五)延時加載

  • (二十六)貪婪加載 Include、IncludeMany、Dto、ToList

  • (二十七)將已寫好的 SQL 語句,與實體類映射進行二次查詢

  • (二十八)事務

  • (二十九)Lambda 表達式

  • (三十)讀寫分離

  • (三十一)分區分表

  • (三十二)Aop

  • (三十三)CodeFirst 類型映射

  • (三十四)CodeFirst 遷移說明

  • (三十五)CodeFirst 自定義特性

轉載于:https://www.cnblogs.com/FreeSql/p/11531423.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/447725.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447725.shtml
英文地址,請注明出處:http://en.pswp.cn/news/447725.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

VUE 項目中引入 json 配置

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 這個寫法還是第一次見到&#xff0c;也不知道是否還有什么環境配置&#xff0c;記錄一下&#xff0c;或許以后什么時候也可以參考&#…

新手課堂之汽車燈光操作及位置

駕考科目三模擬夜間燈光操作你了解多少&#xff1f;汽車燈光該如何操作&#xff1f;下面我們隨眾悅學車網編輯一起來看看吧&#xff01; 科目三考試中&#xff0c;模擬夜間燈光使用是每個學員都要參加的一項考試&#xff0c;那么&#xff0c;汽車燈光包括些什么燈呢&#xff1f…

FreeSql (二十九)Lambda 表達式

FreeSql 支持功能豐富的表達式函數解析&#xff0c;方便程序員在不了解數據庫函數的情況下編寫代碼。這是 FreeSql 非常特色的功能之一&#xff0c;深入細化函數解析盡量做到滿意&#xff0c;所支持的類型基本都可以使用對應的表達式函數&#xff0c;例如 日期、字符串、IN查詢…

Spring注解 @Qualifier 說明、用法

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 -------------------------------------------- 我是分隔線 --------------------------------------------------- Qualifier&#xf…

科目三中模擬燈光使用考試常見的錯誤 廣州學車網光大國際駕校學車

夜間駕駛雖是 駕照考試中抽選的內容&#xff0c;但科目三中模擬燈光使用考試&#xff0c;還是要了解一下的。以下列出了考試中常見的錯誤。 1.前照燈非遠光狀態&#xff0c;聽到“請將前照燈變換成遠光”指令&#xff0c;不變換或變換錯誤的或者前照燈在遠光狀態下&#xff0c;…

FreeSql (三十)讀寫分離

FreeSql 支持數據庫讀寫分離&#xff0c;本功能是客戶端的讀寫分離行為&#xff0c;數據庫服務器該怎么配置仍然那樣配置&#xff0c;不受本功能影響&#xff0c;為了方便描術后面講到的【讀寫分離】都是指客戶端的功能支持。 各種數據庫的讀寫方案不一&#xff0c;數據庫端開啟…

把 excel 表中的數據 批量修改到指定數據庫表中、根據 excel 表中數據修改數據庫表中數據

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 收到一張 excel 表&#xff0c;要求根據 “轉賬時間”一列的值批量修改數據庫表中 "放款時間"一列的值。 2. 寫出 sql 模…

科?目?三?智?能?考?試?系?統?實?際?道?路?考?試?項?目?評?判?標?準

科目三智能考試系統是將公安部實際道路考試項目評判標準加以量化&#xff0c;重點考學員的駕駛技能、安全意識及文明駕車的理念&#xff0c;并將其融入 各個考試項目之中。 二考試技術指標 1、上車準備 考試開始后&#xff0c;學員應當根據考試員發出的“上車準備”指令后…

FreeSql (三十一)分區分表

分區 分區就是把一個數據表的文件和索引分散存儲在不同的物理文件中。把一張表的數據分成N多個區塊&#xff0c;這些區塊可以在同一個磁盤上&#xff0c;也可以在不同的磁盤上&#xff0c;數據庫不同實現方式有所不同。 與分表不同&#xff0c;一張大表進行分區后&#xff0c;他…

FreeSql (三十二)Aop

FreeSql AOP 已有的功能介紹&#xff0c;未來為會根據用戶需求不斷增強。 審計 CRUD 馬云說過&#xff0c;996是修福報。對于多數程序員來說&#xff0c;加班是好事。。。起碼不是閑人&#xff0c;不會下崗。 當如果因為某個 sql 騷操作耗時很高&#xff0c;沒有一個相關的審計…

SpringMvc 注解 @InitBinder 表單多對象精準綁定接收

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 InitBinder用于在Controller中標注于方法&#xff0c;表示為當前控制器注冊一個屬性編輯器或者其他&#xff0c;只對當前的Controller有…

2014年科目三智能化考試十大必知事項

一、模擬夜考燈光使用 1&#xff0c;夜間通過急轉彎/坡道/拱橋/人行橫道/或沒有交通信號燈控制的路口&#xff1b; 燈光使用&#xff1a;交替使用遠近光(變光2次以上) 2&#xff0c;夜間在窄路窄橋與非機動車會車 燈光使用&#xff1a;近光燈 3&#xff0c;夜間在道路上發生故障…

SpringMVC注解 @initbinder 解決類型轉換問題

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 使用 SpringMVC 時&#xff0c;常遇到表單中日期字符串和 JavaBean 的 Date 類型的轉換&#xff0c;而 SpringMVC 默認不支持這個格式的…

看了就徹底明白人生!!!

出生一張紙&#xff0c;開始一輩子&#xff1b; 畢業一張紙&#xff0c;奮斗一輩子&#xff1b; 婚姻一張紙&#xff0c;折磨一輩子&#xff1b; 做官一張紙&#xff0c;斗爭一輩子&#xff1b; 金錢一張紙&#xff0c;辛苦一輩子&#xff1b; 榮譽一張紙&#xff0c;虛名一輩子…

FreeSql (三十三)CodeFirst 類型映射

前面有介紹過幾篇 CodeFirst 內容文章&#xff0c;有 《&#xff08;二&#xff09;自動遷移實體》(https://www.cnblogs.com/FreeSql/p/11531301.html)《&#xff08;三&#xff09;實體特性》(https://www.cnblogs.com/FreeSql/p/11531302.html)《&#xff08;四&#xff09;…

FreeSql (三十四)CodeFirst 遷移說明

FreeSql 支持 CodeFirst 遷移結構至數據庫&#xff0c;這應該是(O/RM)必須標配的一個功能。 與其他(O/RM)不同FreeSql支持更多的數據庫特性&#xff0c;而不只是支持基礎的數據類型&#xff0c;這既是優點也是缺點&#xff0c;優點是充分利用數據庫特性輔助開發&#xff0c;缺點…

曾國藩家訓:三個地方看一個家庭的興敗

第一看&#xff1a;看子孫睡到幾點&#xff0c;假如睡到太陽都已經升得很高的時候才起來&#xff0c;那代表這個家族會慢慢懈怠下來;第二看&#xff1a;看子孫有沒有做家務&#xff0c;因為勤勞、勞動的習慣影響一個人一輩子;第三看&#xff1a;看后代子孫有沒有在讀圣賢的經典…

Linux 查看文件指定行數 內容

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1、tail date.log 輸出文件末尾的內容&#xff0c;默認10行 tail -20 date.log 輸出最后20行的內容 tail -n -20…

FreeSql (三十五)CodeFirst 自定義特性

比如項目內已經使用了其它 orm&#xff0c;如 efcore&#xff0c;這樣意味著實體中可能存在 [Key]&#xff0c;但它與 FreeSql [Column(IsPrimary true] 不同。 Q&#xff1a; FreeSql 實體特性為啥這么別扭&#xff1f; A&#xff1a; 為了考慮一致性用法&#xff0c;全部封裝…

相隨心轉,枯榮立現

宋朝時&#xff0c;有高孝標和高孝積兩個雙胞胎兄弟&#xff0c;舉止言談和才思穎悟都象同一人。十六歲時&#xff0c;他們一齊考上秀才。婚后&#xff0c;父母為使媳婦能辨認丈夫&#xff0c;命令他們穿著不同衣裳和鞋子&#xff0c;以便辨認。有一天&#xff0c;他們遇到陳希…