使用LINQ2SQL的SqlCacheDependency(存储库模式)

时间:2011-11-29 19:13:20

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

我在ASP.Net 3.5网络应用程序中使用L2S存储库模式。但我对现场体验的表现并不十分满意。我搜索了谷歌并使用SqlCacheDependency Class遇到了SQL缓存。但我没有任何教程或链接可以解释如何在我的场景中使用它。

所以请帮助我们......任何帮助或指导都将受到高度赞赏。

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

先谢谢

更新: 我的存储库

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

2 个答案:

答案 0 :(得分:0)

有时linq-to-sql以意想不到的方式进行查询。你有没有检查你的linq查询如何被翻译成sql?使用Sql Server Profiler(在SQL Management服务器的工具菜单上提供)来检查生成的查询。我写了一些关于它的信息here

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

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

答案 1 :(得分:0)

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

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