Asp.net mvc 将SQLDependency或SqlCacheDependency与存储库模式一起使用

Asp.net mvc 将SQLDependency或SqlCacheDependency与存储库模式一起使用,asp.net-mvc,repository-pattern,sqldependency,sqlcachedependency,Asp.net Mvc,Repository Pattern,Sqldependency,Sqlcachedependency,我正在使用Repository模式构建一个ASP.NET MVC应用程序。我的存储库中的一个典型方法如下 public IList<T> Select<T>(string cacheKey, string Sql, object filter) where T: new() { IList<T> items = MemoryCache.Default.Get(cacheKey) as IList<T>;

我正在使用Repository模式构建一个ASP.NET MVC应用程序。我的存储库中的一个典型方法如下

   public IList<T> Select<T>(string cacheKey, string Sql, object filter) where T: new()
    {
        IList<T> items = MemoryCache.Default.Get(cacheKey) as IList<T>; 
          if (items == null || !items.Any())
          {
              items = Connection.Select<T>(Sql, filter);
              MemoryCache.Default.Add(cacheKey, items, DateTime.Now.AddMinutes(120));
          }

        return items;

    }
公共IList选择(字符串缓存键、字符串Sql、对象过滤器),其中T:new() { IList items=MemoryCache.Default.Get(cacheKey)作为IList; if(items==null | |!items.Any()) { items=Connection.Select(Sql,filter); MemoryCache.Default.Add(cacheKey,items,DateTime.Now.AddMinutes(120)); } 退货项目; } 它的用途如下

IEnumerable<OSADCOL> osadcols = Repository.Select<OSADCOL>("OSADCOLS__TblId=" + Id, "TBLid = @id", new { id = Id });
IEnumerable osadcols=Repository.Select(“osadcols_uutblid=“+Id”,TblId=@Id”,new{Id=Id});
在上面提到的示例中,OSADCOL是我的应用程序中的一个模型,表示数据库中具有相同名称的表。
连接。选择
功能是ORMlite功能。我不使用实体框架来解决性能问题。我的问题如下。我目前正在兑现结果集,以备将来参考,但我是以硬编码的方式进行的。我将结果集缓存2小时。显然,当OSADCOL的表数据发生更改时,正确的实现是丢弃我的现金数据。似乎我必须使用SQLDependency或SQLCacheDependency。问题如下:

  • 我将如何在此存储库中使用SQLDependency或SQLCacheDependency
  • 这二者之间的实际区别是什么
  • 有些论坛提到SQLDependency会造成内存泄漏?这是真的吗?如果是的话,还有其他的方法吗
  • 有什么想法吗