ADO.Net Entity Framework : (二) 實現 with(nolock) 查詢

因為公司的案子在執行資料查詢時,都習慣在查詢語法裡使用With(nolock), 
用以提升查詢效率與避免LOCK發生,如下

1select from [Userwith(nolock)

剛好之前在使用Entity Framework時,也有這個需求, 
因此找了一下資料
要在 Linq to SQL 或 Entity Framework 下實現 with(nolock) 查詢方法如下 

方法一   使用 TransactionScope

01示範: with(nolock)查詢
02using (TestEntities te = new TestEntities())
03{
04    方法一
05    須引用 System.Transactions
06    using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required
07        new TransactionOptions() { IsolationLevel = IsolationLevel.ReadUncommitted }))
08    {
09        var users = te.User.Select(a => a).ToList();
10    }
11}

需注意此方法在跨資料庫查詢時,啟動MSDTC,並降低效能。

 

方法二  使用 ObjectContext.Connection.BeginTransaction

1示範: with(nolock)查詢
2using (TestEntities te = new TestEntities())
3{
4    方法二
5    此方法會修改所有操作的交易層級
6    te.Connection.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted);
7    var users = te.User.Select(a => a).ToList();
8}

需注意此方法會修改所有操作的交易層級

 

方法三  使用預存程序(stored procedures ),將查詢語法包裝在裡面

 

提供一些心得給大家參考

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值