How do you implement caching in Linq to SQL?我们刚刚开始在DAL工作中使用LINQ to SQL 我的LINQ查询结果缓存可能正好是您要查找的内容。
Pete。 一个快速的答案:使用存储库模式(请参阅Evans的域驱动设计)来获取您的实体。每个存储库都将缓存其将要保存的内容,最好是让每个存储库实例访问一个单例缓存(每个线程/请求将实例化一个新的存储库,但只能有一个缓存)。 以上答案仅适用于一台计算机。为了能够在许多机器上使用它,请使用memcached作为您的缓存解决方案。祝你好运! 就在你的nose下面:
现在,只需缓存myResult即可,就像您缓存旧DAL的返回数据一样。 我知道这可能是一个较晚的答案...尽管如此,您可以尝试一下LinqToCache项目。如果可能,它将SqlDepdency挂接到任意LINQ查询上,并通过服务器端查询通知提供活动的缓存无效。这些查询必须是对通知的有效查询,请参阅为通知创建查询。只要使用两部分名称( 我发现了这篇文章,它提供了一种扩展方法,作为缓存LINQ对象的一种方法。 我一直在努力寻找弱点,现在想为Linq2SQL找到一个好的缓存解决方案,必须承认我确实在努力寻找适合所有人的单一大小... 存储库模式倾向于限制Linq的有用性,因为(必须重新实现IQueryable)缓存必须在Linq语句之外执行。 此外,如果要缓存对象,则延迟加载和对象跟踪都是很大的麻烦,这使得执行更新有些棘手。 任何在高度并行的Web项目中成功解决了这个问题的人,请鸣叫并拯救世界! :) 请参阅本文" ReferenceData"类中的" GetReferenceData"方法: 它使用asp.net页面缓存来缓存使用L2S检索的数据。 |