最新版本的DataRabbit(版本號:V3.2)新增一項重要功能--可以捕獲訪問數據庫時產生的異常的詳細信息,包括:異常對象、Sql語句、sql參數的名稱和值。這是由 IDBOperationLogger 接口提供支持的。
/// IDBOperationLogger用于捕獲住DB操作異常。可以用于記錄DB操作失敗時的語句和參數。
/// </summary>
public interface IDBOperationLogger
{
void LogException( Exception ee, string methodName, string cmdText, IDataParameterCollection parameters);
}
當通過DataRabbit訪問數據庫時,所產生的任何異常,都會被 IDBOperationLogger 接口捕獲住,你可以實現自己的Filter來對捕獲的異常進行處理,比如,記錄下執行失敗的SQL語句和對應的參數值。
DataRabbit內部提供了 IDBOperationLogger 接口的兩種實現: EmptyDBOperationLogger 和 DBOperationLogger 。 EmptyDBOperationLogger 將忽略異常信息,而 DBOperationLogger 將會把異常的詳細信息記錄到日志文件。
比如,在數據庫的Student表中插入一條記錄時,產生主鍵沖突的異常,則 DBOperationLogger 會記錄類似下面的的日志:
< 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>節點下的 <text> 子節點的內容就是執行失敗的SQL語句,而 < parameters > 節點下的子節點則列出了所有的參數名稱及其對應的值。
那么,如何注入 IDBOperationLogger 實例到DataRabbit框架中了?通過 TransactionScopeFactory 的 DBOperationLogger 屬性。例如:

TransactionScopeFactory transactionScopeFactory = new TransactionScopeFactory ();
transactionScopeFactory.DataConfiguration = config;
transactionScopeFactory. DBOperationLogger = new DBOperationLogger ( " DBException.txt " );
transactionScopeFactory.Initialize();
上述配置會將異常日志記錄到當前目錄下的DBException.txt 文件中。
如果不設置 DBOperationLogger 屬性,則DataRabbit框架默認采用 EmptyDBOperationLogger。
記錄執行失敗的SQL語句和對應的參數值,對于我們分析異常產生的原因是十分有用的,而DataRabbit可以自動為你記錄了這些信息。
關于V3.2版本的DataRabbit 請到 DataRabbit 輕量的ORM框架(00) -- 序 文末處下載,謝謝!
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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