【问题标题】:SqlCacheDependency with LINQ2SQL (Repository Pattern)使用 LINQ2SQL 的 SqlCacheDependency(存储库模式)
【发布时间】:2012-01-09 02:58:00
【问题描述】:

我在我的 ASP.Net 3.5 Web 应用程序中使用 L2S 存储库模式。但我对现场体验的表现不太满意。我搜索了谷歌,发现使用 SqlCacheDependency 类的 SQL 缓存。但是我没有任何教程或链接来解释如何在我的场景中使用它。

所以请帮助我...任何帮助或指导将不胜感激。

请使用一些示例代码或在线参考......

提前致谢

更新: 我的仓库

public interface IRepository<T> where T : class
{
    T GetById(int id);
    IQueryable<T> GetAll();
    void SaveOrUpdate(T entity);
    void DeleteOnSubmit(T entity);
}

【问题讨论】:

标签: c# asp.net linq-to-sql repository-pattern sqlcachedependency


【解决方案1】:

有时 linq-to-sql 会以意想不到的方式进行查询。您是否检查过您的 linq 查询是如何转换为 sql 的?使用 Sql Server Profiler(在 SQL 管理服务器的工具菜单上可用)检查生成的查询。我写了一些关于它的信息here

一旦您知道生成了良好的查询,您应该查看其中任何一个的执行是否是性能瓶颈。探查器也可以在这里提供帮助。如果某些查询运行缓慢,请尝试添加适当的索引。

除非您有一个非常大容量的网站,否则这些步骤应该可以为您提供良好的性能,而无需进行缓存。

【讨论】:

    【解决方案2】:

    您没有描述如何在存储库中使用 linq to sql。基本上,您是为在单个请求期间创建的所有存储库重用相同的 DataContext,还是每个存储库都有自己的 DataContext 实例?如果是后者,您将失去 DataContext 的内部缓存能力。

    另一个可以提高性能的领域是,如果您有任何经常使用的查询,其中包含许多连接层(而不仅仅是单个表选择)。在这里使用CompiledQuery 将大大加快速度。 CompiledQueries 只需在第一次使用时生成,否则每次使用时都会重新编译查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-15
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多