实体框架 - 在上下文中防止缓存

时间:2017-02-15 10:23:14

标签: sql-server entity-framework entity

我有一个基于实体框架的Web API,可以读取和写入Mssql数据库中的数据。 如果您不想在每次访问任何数据时都想访问数据库,那么上下文就很棒,因为它会缓存您之前使用过的数据。

但我的问题在这里开始了;

我有一个独立运行的爬虫并更改数据库。因此,我的Web应用程序上下文并不知道爬虫程序发生了什么变化。因为当我尝试访问数据时,它会向我显示上下文中的数据。

那么,我怎样才能防止在上下文中缓存,我怎么能说从每个请求读取mssql中的数据呢?

1 个答案:

答案 0 :(得分:0)

如果您知道实体已在当前上下文中修改,则可以通过Reload方法重新加载:

通用版本可能如下所示:

 public T Reload<T>(T entity) where T : class
 {
    Context.Entry(entity).Reload();
    return entity;
 }

顺便说一下,在大多数情况下都可以避免出现问题,特别是在Web API / MVC的情况下,由于正确管理EF上下文的生命周期(你必须为每个请求创建新的上下文实例)< / p>