CodehighlightingproducedbyActiproCodeHighlighter(freeware)
http://www.CodeHighlighter.com/

--" />

黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

DataRabbit 輕量的ORM框架(18)-- 捕獲數(shù)據(jù)

系統(tǒng) 2648 0

最新版本的DataRabbit(版本號:V3.2)新增一項重要功能--可以捕獲訪問數(shù)據(jù)庫時產(chǎn)生的異常的詳細信息,包括:異常對象、Sql語句、sql參數(shù)的名稱和值。這是由 IDBOperationLogger 接口提供支持的。

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> /// <summary>
/// IDBOperationLogger用于捕獲住DB操作異常。可以用于記錄DB操作失敗時的語句和參數(shù)。
/// </summary>
public interface IDBOperationLogger
{
void LogException( Exception ee, string methodName, string cmdText, IDataParameterCollection parameters);
}

當通過DataRabbit訪問數(shù)據(jù)庫時,所產(chǎn)生的任何異常,都會被 IDBOperationLogger 接口捕獲住,你可以實現(xiàn)自己的Filter來對捕獲的異常進行處理,比如,記錄下執(zhí)行失敗的SQL語句和對應(yīng)的參數(shù)值。

DataRabbit內(nèi)部提供了 IDBOperationLogger 接口的兩種實現(xiàn): EmptyDBOperationLogger DBOperationLogger EmptyDBOperationLogger 將忽略異常信息,而 DBOperationLogger 將會把異常的詳細信息記錄到日志文件。

比如,在數(shù)據(jù)庫的Student表中插入一條記錄時,產(chǎn)生主鍵沖突的異常,則 DBOperationLogger 會記錄類似下面的的日志:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> 2008 / 11 / 19 11 : 49 : 20 :高--違反了PRIMARYKEY約束 ' PK_Student ' 。不能在對象 ' dbo.Student ' 中插入重復(fù)鍵。語句已終止。錯誤類型:System.Data.SqlClient.SqlException。位置:
< dbCommand >
< method > ExcuteCommand </ method >
< text > INSERTINTOStudent([AutoID],[Name],[Age],[Comment])VALUES(@AutoID,@Name,@Age,@Comment) </ text >
< parameters >
< paraname = " @AutoID " value = " 0 " />
< paraname = " @Name " value = " Sky " />
< paraname = " @Age " value = " 30 " />
< paraname = " @Comment " value = " NoComment " />
</ parameters >
</ dbCommand >

日志中,< dbCommand>節(jié)點下的 <text> 子節(jié)點的內(nèi)容就是執(zhí)行失敗的SQL語句,而 < parameters > 節(jié)點下的子節(jié)點則列出了所有的參數(shù)名稱及其對應(yīng)的值。

那么,如何注入 IDBOperationLogger 實例到DataRabbit框架中了?通過 TransactionScopeFactory DBOperationLogger 屬性。例如:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> DataConfiguration config = ;
TransactionScopeFactory transactionScopeFactory
= new TransactionScopeFactory ();
transactionScopeFactory.DataConfiguration
= config;
transactionScopeFactory. DBOperationLogger
= new DBOperationLogger ( " DBException.txt " );
transactionScopeFactory.Initialize();

上述配置會將異常日志記錄到當前目錄下的DBException.txt 文件中。

如果不設(shè)置 DBOperationLogger 屬性,則DataRabbit框架默認采用 EmptyDBOperationLogger。

記錄執(zhí)行失敗的SQL語句和對應(yīng)的參數(shù)值,對于我們分析異常產(chǎn)生的原因是十分有用的,而DataRabbit可以自動為你記錄了這些信息。

關(guān)于V3.2版本的DataRabbit 請到 DataRabbit 輕量的ORM框架(00) -- 序 文末處下載,謝謝!

DataRabbit 輕量的ORM框架(18)-- 捕獲數(shù)據(jù)庫訪問異常的詳細信息


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論