在公司時前輩們指導在執行資料查詢時使用with(nolock),來優化與提升查詢效能(當然也要看是在做哪種查詢...不是盲目使用),
這裡是因為在使用Entity Framework時突然不知道要怎麼寫,於是Google了一下,就順便紀錄下來方便以後忘了可以查詢...
在公司時前輩們指導在執行資料查詢時使用with(nolock),來優化查詢效能(當然也要看是在做哪種查詢...不是盲目使用),
這裡是因為在使用Entity Framework時突然不知道要怎麼寫,於是Google了一下,就順便紀錄下來方便以後忘了可以查詢,
以下文章轉載於這篇http://www.dotblogs.com.tw/asdtey/archive/2009/09/27/10793.aspx,
裡面寫的滿清楚的,還提供多種方法:
(以下三種方法我使用的是第一種,需要注意的是在引用System.Transactions時,參考是需要先自行加入才能引用!)
方法一 使用 TransactionScope
01 |
////示範: with(nolock)查詢 |
02 |
using (TestEntities te = new TestEntities()) |
05 |
////須引用 System.Transactions |
06 |
using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required |
07 |
, new TransactionOptions() { IsolationLevel = IsolationLevel.ReadUncommitted })) |
09 |
var users = te.User.Select(a => a).ToList(); |
需注意此方法在跨資料庫查詢時,啟動MSDTC,並降低效能。
方法二 使用 ObjectContext.Connection.BeginTransaction
2 |
using (TestEntities te = new TestEntities()) |
6 |
te.Connection.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted); |
7 |
var users = te.User.Select(a => a).ToList(); |
需注意此方法會修改所有操作的交易層級
方法三 使用預存程序(stored procedures ),將查詢語法包裝在裡面