将SQLDependency或SqlCacheDependency与Repository模式一起使用

时间:2015-02-27 16:28:51

标签: 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>; 
          if (items == null || !items.Any())
          {
              items = Connection.Select<T>(Sql, filter);
              MemoryCache.Default.Add(cacheKey, items, DateTime.Now.AddMinutes(120));
          }

        return items;

    }

正在使用如下

IEnumerable<OSADCOL> osadcols = Repository.Select<OSADCOL>("OSADCOLS__TblId=" + Id, "TBLid = @id", new { id = Id });

在上面提到的示例中,OSADCOL是我的应用程序中的模型,表示我的数据库中具有相同名称的表。 Connection.Select函数是ORMlite函数。我没有使用Entity Framework来解决性能问题。我的问题如下。我目前正在兑现结果集以用于未来的相关性,但我正在以硬编码方式进行。我将结果集缓存了2个小时。很明显,当OSADCOL的表数据发生变化时,适当的实现将是丢弃我的兑现数据。看来我必须使用SQLDependency或SQLCacheDependency。问题如下:

  1. 如何在此存储库中使用SQLDependency或SQLCacheDependency?
  2. 这两个之间的实际差异是什么?
  3. 在某些论坛中提到SQLDependency会造成内存泄漏?真的吗?如果是,还有另一种方法吗?
  4. 任何想法?

0 个答案:

没有答案