c# - Entity Framework 中的 NoLock

标签 c# asp.net-mvc-3 asp.net-mvc-4 c#-4.0 entity-framework-6

即使表由于特定事务而被锁定,我仍试图从表中读取记录。

我正在使用下面的代码

public async Task<KeyValuePair<String, List<Om_Category>>> CategoryList(Om_Category obj)
{
    try
    {
        using (var transaction = new TransactionScope(
                TransactionScopeOption.Required,
                new TransactionOptions 
                { 
                    IsolationLevel = IsolationLevel.ReadUncommitted 
                },
                TransactionScopeAsyncFlowOption.Enabled))
        {
            using (var categoryContext = new ModelGeneration())
            {

                categoryContext.Configuration.ProxyCreationEnabled = false;
                var data = await categoryContext
                    .tblCategory
                    .ToListAsync();

                transaction.Complete();

                return new KeyValuePair<String, List<Om_Category>>("", data);
            }
        }
    }
    catch (Exception ex)
    {
        return new KeyValuePair<String, List<Om_Category>>(ex.Message, null);
    }
}

But seems like I am missing something to implement NoLocks. Still it show timeout. Am I missing something ?

最佳答案

令人惊讶的是, Entity Framework 内置的事务类有效!!

public async Task<KeyValuePair<String, List<BE_Category>>> CategoryList(BE_Category obj)
{
    try
    {
        using (var categoryContext = new ModelGeneration())
        {
            using (var dbContextTransaction = categoryContext
                      .Database
                      .BeginTransaction(System.Data.IsolationLevel.ReadUncommitted))
            {
                categoryContext.Configuration.ProxyCreationEnabled = false;

                //Code

                dbContextTransaction.Commit();

                return new KeyValuePair<String, List<BE_Category>>("", data);
            }
        }
    }
    catch (Exception ex)
    {
        return new KeyValuePair<String, List<BE_Category>>(ex.Message, null);
    }
}

Reference

关于c# - Entity Framework 中的 NoLock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32858415/

相关文章:

c# - 如何在http header 中包含用户ID和密码?

c# - MVC WebGrid 动态列

c# - Membership.DeleteUser() 因 RI 约束而失败

c# - 使用 Input.GetKey 的按键多次返回 true

javascript - 通过 Javascript 调用 Controller 操作

asp.net-mvc-3 - asp.net mvc 3 通过第一个字母分隔 linq 结果

asp.net - .NET MVC 在共享布局中获取当前页面和 Controller

javascript - 通过 viewbag MVC RAZOR 传递链接并出现

c# - wpf mvvm 中的 Datagrid SelectedIndex 在 RaisePropertyChanged 上设置为 0

c# - 我怎么知道我的应用程序窗口是前景窗口