使用Web API清除实体框架的二级缓存(查询缓存)

时间:2018-10-07 23:00:04

标签: c# sql-server caching entity-framework-6 asp.net-web-api2

这就是我正在使用的:

  • ASP.NET Web表单
  • SQL Server 2008
  • Web API 2

我正在尝试使用从Nuget软件包管理器安装的EntityFramework.Cache实现二级缓存。至此,查询结果已被缓存。我已经了解了到期时间和滑动时间,但是我们必须为其设置一个特定的时间。现在,我想做的是在更新数据库(SQL Server 2008)时清除二级缓存。

我的代码如下:

[HttpGet]
public IHttpActionResult Get(string id)
{
    try
    {
        var viewModels = new List<LikeProduct>();

        using (TestDatabaseEntities db = new TestDatabaseEntities())
        {
            var res = db.LikeProducts.Where(xctitemprice => xctitemprice.OrigItem == id).ToList();

            foreach (var model in res)
            {
                 var todoViewModel = new LikeProduct
                                         {
                                             ItemId = model.ItemId,
                                             LikeCounter = model.LikeCounter,
                                             OrigItem = model.OrigItem
                                          };
                 viewModels.Add(todoViewModel);
            }

            return Json(viewModels);
        }
    }
    catch
    {
        return InternalServerError();
    }
}

是否可以在此处添加一些更改,这些更改将首先检查查询结果是否已更新。如果是,则清除缓存并从数据库获取结果,否则返回缓存的数据。

如果问题不清楚,我们深表歉意。如果需要其他信息,请告诉我。

先谢谢了。 :)

0 个答案:

没有答案