原創|使用教程|編輯:龔雪|2014-01-23 09:16:48.000|閱讀 204 次
概述:Linq to SQL Profiler是由以色列著名公司Hibernating Rhinos開發出來的數據庫工具。并且該軟件是由 OR/M 社區的高層領導人親自開發設計,能夠精準的幫助優化App的冗余的代碼。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Linq to SQL Profiler強烈不建議在同一個請求里寫多個datacontext,這樣會對數據庫造成不好的影響。
首先每一個單獨的datacontext都會用到一個單獨的數據庫連接。同一個請求里有多個datacontext存在的話就意味著需要多個數據庫連接,這樣會影響到系統總體性能,并且給數據庫增壓。
其次,使用多個datacontext也意味著我們無法使用數據庫內置的事務支持功能,而是依賴于系統,但是系統在事務方面的效率要慢得很多。
再者,我們不能依賴于數據庫來保證查看數據的事務安全,因為我們使用的是多個不同的事務來訪問數據庫。即使是使用系統事務時也是同樣的道理。當在使用系統事務時,它會強迫我們使用DTC來保證所有的sessions都在同一個事務里,而DTC則會導致系統性能變差。
請參考下面一段代碼,這是在單個的操作里包含了多個datacontext:
public void TransferMoney(Account from, Account to, Money amount) { Dao.Withdraw(from, amount); Dao.Deposit(to, amount); } public void Withdraw(Account account, Money amount) { using(var ctx = new MyBankContext()) { account.MoenyAmount -= amount; ctx.Accounts.Attach(account); ctx.SaveChanges(); } } public void Deposit(Account account, Money amount) { using(var ctx = new MyBankContext()) { account.MoenyAmount += amount; ctx.Accounts.Attach(account); ctx.SaveChanges(); } }
在這個示例中,我們需要對數據庫進行兩次調用:兩個不同的datacontext各調用一次。因此,我們無法使用數據庫自帶的事務支持功能:由于兩次調用是發生在不同的事務中。
所以,要想解決這種問題的辦法就是:在一個請求里只使用一個datacontext。
>>歡迎點此免費下載和試用Linq to SQL Profiler
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn