【问题标题】:Entity Framework Core query always returns cached dataEntity Framework Core 查询总是返回缓存数据
【发布时间】:2019-12-02 06:32:02
【问题描述】:

我使用 blazor 服务器端并将我的 DbContext 注册为瞬态,我也将数据访问类注册为瞬态,但是如果不更改参数,EF Core 总是返回缓存的数据,除非在查询之前有更新,否则它会返回新数据。

我尝试在每次调用每个数据访问方法而不是依赖注入时创建一个 DbContext 实例,但它也返回缓存数据。

 services.AddDbContext<StoreContext>(options =>
          options.UseSqlServer(
              Configuration["Data:StoreProducts:ConnectionString"]), ServiceLifetime.Transient);

services.AddTransient<DataAccess.Dal>();

这是达尔:

public UserLock GetByUserName(string userName)
    {           
           return context.UserLocks.FirstOrDefault(l => l.User.ToLower() == userName.ToLower());                       
    }

或:

public UserLock GetByUserName(string userName)
    {
        using (var db = new StoreContext())
        {
            return context.UserLocks.FirstOrDefault(l => l.User.ToLower() == userName.ToLower());
        }
    }

如何解决这个问题?

【问题讨论】:

    标签: entity-framework-core blazor-server-side


    【解决方案1】:

    我这样解决了我的问题:

     public UserLock GetByUserName(string userName)
        {           
            UserLock ulock = context.UserLocks.FirstOrDefault(l => l.User.ToLower() == userName.ToLower());
            context.Entry(ulock).Reload();
            return ulock;
        }
    

    【讨论】:

      【解决方案2】:

      如果您只是想获取用户并返回它,您可以在 linq 查询中添加 AsNoTracking() 以防止 EF 使用缓存的内容。

      【讨论】:

        猜你喜欢
        • 2017-03-19
        • 2018-08-31
        • 1970-01-01
        • 2018-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-25
        • 2020-09-11
        相关资源
        最近更新 更多