我正在使用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。问题如下:
任何想法?