亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

DataRabbit 輕量的數(shù)據(jù)訪問(wèn)框架(08) -- Dat

系統(tǒng) 2251 0

(完全限定類名: DataRabbit.Application.TransactionScopeFactory DataRabbit.Application.TransactionScope

關(guān)于TransactionScopeFactory首先要提醒以下幾點(diǎn):
(1)TransactionScopeFactory是DataRabbit框架的入口點(diǎn),所有的訪問(wèn)器、 分頁(yè)管理器 大綱操作者 都可以從TransactionScopeFactory生成的TransactionScope(事務(wù)范圍)處獲取。
(2)TransactionScopeFactory針對(duì)的是一個(gè)數(shù)據(jù)庫(kù),對(duì)于一個(gè)特定的數(shù)據(jù)庫(kù),應(yīng)用程序只需要維護(hù)一個(gè)TransactionScopeFactory實(shí)例(引用)即可。

(3)可以按照類似下面的代碼來(lái)構(gòu)造TransactionScopeFactory實(shí)例:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> DataConfiguration config = new DataConfiguration (DataBaseType.SqlServer, " 127.0.0.1 " , " sa " , pwd " , " TestDB " , null );
config.MaxPoolSize
= 100 ; // 連接池最大連接數(shù)
config.MinPoolSize = 0 ; // 連接池最小連接數(shù)
config.CommandTimeoutInSecs = 30 ; // 執(zhí)行命令的最大超時(shí)時(shí)間(s)

TransactionScopeFactory transactionScopeFactory = new TransactionScopeFactory ();
transactionScopeFactory.DataConfiguration
= config;
transactionScopeFactory.DBExceptionFilter
= new DBExceptionFilter ( " DBException.txt " );
transactionScopeFactory.Initialize();

DBExceptionFilter 用于捕獲數(shù)據(jù)庫(kù)訪問(wèn)時(shí)拋出的任何異常,上面的示例代碼表示將會(huì)把所有的詳細(xì)異常信息記錄到當(dāng)前目錄的 DBException.txt 文件中。關(guān)于DBExceptionFilter 更詳細(xì)的介紹,可參見(jiàn) 這里


前面講了多種訪問(wèn)器,并且這些訪問(wèn)器都繼承了 ITransactionAccesser 接口。我們已經(jīng)知道,ITransactionAccesser的含義在于:訪問(wèn)器對(duì)象即可以工作于一個(gè)事務(wù)(Transaction)上下文中,也可以在脫離事務(wù)的環(huán)境中工作。前面舉的所有示例中都沒(méi)有涉及到事務(wù),本文我們將介紹在DataRabbit中如何使用事務(wù)。
TransactionScope,表示一個(gè)事務(wù)的范圍,我們可以從TransactionScope中獲取前述的所有訪問(wèn)器實(shí)例,并且從中獲取的訪問(wèn)器都是基于事務(wù)的(訪問(wèn)器的生命期將隨事務(wù)的結(jié)束而結(jié)束)。TransactionScope的類圖如下所示:
DataRabbit 輕量的數(shù)據(jù)訪問(wèn)框架(08) -- DataRabbit 的入口點(diǎn):TransactionScopeFactory和TransactionScope
首先,我們看到了一些以“New”打頭的方法,這些方法用于創(chuàng)建各種基于事務(wù)的訪問(wèn)器對(duì)象。
TransactionScope會(huì)在構(gòu)造函數(shù)中啟動(dòng)事務(wù),所以我們只有在需要事務(wù)的地方才構(gòu)建TransactionScope實(shí)例。TransactionScope實(shí)例通常在Business Flow子層中創(chuàng)建。另外,TransactionScope支持兩種使用模式:
(1)自動(dòng)模式:使用using塊 ,將在異常發(fā)生時(shí),自動(dòng)回滾事務(wù)。
(2)手動(dòng)模式:不使用using塊,可根據(jù)業(yè)務(wù)需要手動(dòng)回滾事務(wù)(調(diào)用TransactionScope的Rollback方法),更具靈活性。

我們可以通過(guò)DataRabbit.Application.TransactionScopeFactory來(lái)獲得TransactionScope對(duì)象。

下面我們舉個(gè)非常簡(jiǎn)單的事務(wù)訪問(wèn)的例子,假設(shè)某個(gè)業(yè)務(wù)邏輯要求我們?cè)赨pdate某個(gè)student的Age的時(shí)候,必須在Book表中插入一條相關(guān)記錄,這是一個(gè)事務(wù)性的動(dòng)作。使用TransactionScope,我們可以輕易達(dá)成目標(biāo):

// transactionScopeFactory通常以singleton模式使用
TransactionScopeFactory transactionScopeFactory = ...;


using ( TransactionScope scope = transactionScopeFactory.NewTransactionScope( true ))
{
IOrmAccesser
< Student > stuOrmAccesser = scope. NewOrmAccesser < Student > ();
IOrmAccesser
< Book > bookOrmAccesser = scope. NewOrmAccesser < Book > ();

// 更新Student
Studentstu = new Student();
stu.ID
= 33 ;
stu.Age
= 28 ;
stuOrmAccesser.Update(stu);

// 插入Book
Bookbook = new Book();
book.ID
= 9 ;
book.StudentID
= stu.ID;
bookOrmAccesser.Insert(book);

scope.Commit();//提交事務(wù),別忘了這句
}


上述代碼如果在Update或Insert的時(shí)候拋出異常,事務(wù)將會(huì)自動(dòng)回滾,這是在TransactionScope的Dispose方法中做到的。

如果不需要事務(wù)支持,則transactionScopeFactory.NewTransactionScope( true )方法的參數(shù)由 true 改為 false 即可,其它的都不用作任何改變,這使得開啟/關(guān)閉事務(wù)的控制變得非常的簡(jiǎn)單。


轉(zhuǎn)到: DataRabbit 輕量的數(shù)據(jù)訪問(wèn)框架 -- 序

DataRabbit 輕量的數(shù)據(jù)訪問(wèn)框架(08) -- DataRabbit 的入口點(diǎn):TransactionScopeFactory和TransactionScope


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 日本一级在线观看视频播放 | 福利视频一区 | 九九国产 | 国产成人精品曰本亚洲77美色 | 天啪天天久久天天综合啪 | 国产亚洲精品激情一区二区三区 | 国产乱码精品一区二区三上 | 亚洲国产成人资源在线桃色 | 奇米影视一区 | 国内精品久久久久久久影视麻豆 | 中文字幕免费在线播放 | 成人欧美一区二区三区黑人妖 | 成人黄色在线免费观看 | 久久精品国产亚洲香蕉 | 中文字幕第一区 | 天天操网 | 亚洲欧美乱综合图片区小说区 | 资源站在线 | 亚洲系列在线 | 九九热精品在线视频 | 国产日韩一区二区三区在线播放 | 波多野吉衣一区二区三区在线观看 | 亚洲综合区小说区激情区噜噜 | 97中文字幕在线观看 | 好吊788gaoco | 一级做受毛片免费大片 | 97色在线播放 | 99热这里只有精品8 99热这里只有精品88 | 国产日产欧美一区二区三区 | 日韩精品片 | 国产小视频免费观看 | 香蕉国产精品 | 影视先锋av资源噜噜 | 国产精品久久久久久久y | 黄色大全网站 | 亚洲成人在线免费观看 | 四虎影院黄色 | 2021在线永久免费视频 | 色久天 | 97国产在线视频公开免费 | 亚洲高清视频在线播放 |