[C#] 如何讓Linq + entity framework 可以達到with(nolock)

到底Linq對SQL做了什麼??

現在大部分人都使用linq+entity framework 去資料庫取得資料,但實際上在對資料庫存取SQL語法為何,確認大多數人並不了解的。

建議可以使用LINQPad 這套程式來去測試看看,避免不必要的語法造成資料的Lock,一個常用的資料表Lock會影響到其他作業的進行,甚至有可能造成TimeOut,而發出告警。

大家可以參考下列語法使用,針對select 部分,就不會去lock Table,也不會因為其他的資源lock 而造成TimeOut

using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required
, new TransactionOptions() { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted }))
{
使用到的linq 語法
}

其中使用到的TransactionScopeOption列舉 可以參考 .NET Framework 類別庫說明

裡面有用到三種方式,如果要nolock 請使用Required,請參考下列圖示
TransactionScopeOption

希望大家不要再被linq 所產生的語法所困惱了~

作者: EmptyWu

十年左右的攻城經歷,但始終覺得能力不足,希望這地方可以填滿不足點。

有任何問題,歡迎提問~