如何在Linq to SQL中实现缓存?

Gle*_*ven 33 .net sql iis caching linq-to-sql

我们刚刚开始在我们的DAL中使用LINQ to SQL,我们还没有真正提出缓存模型的标准.以前我们使用的是一个基础'DAL'类,它实现了我们所有DAL类继承的缓存管理器属性,但现在我们没有.我想知道是否有人提出了一种缓存LINQ to SQL结果的"标准"方法?

我们正在网络环境(IIS)中工作,如果这有所作为.我知道这可能最终成为一个主观问题,但我仍然认为这些信息很有价值.

编辑:为了澄清,我不是在讨论缓存单个结果,我更多的是一个架构解决方案,就像你如何设置缓存一样,以便所有的链接方法都使用相同的缓存架构.

Pet*_*ery 38

我的LINQ查询结果缓存可能正是您正在寻找的.

var q = from c in context.Customers
        where c.City == "London"
        select new { c.Name, c.Phone };

var result = q.Take(10).FromCache();
Run Code Online (Sandbox Code Playgroud)

皮特.

  • 这是一段精彩的代码,像这样需要构建到框架中. (4认同)

Tho*_*röm 9

快速回答:使用Repository模式(请参阅Evans的Domain Driven Design)来获取实体.每个存储库将缓存它将保留的内容,理想情况是让存储库的每个实例访问单个缓存(每个线程/请求将实例化一个新的存储库,但只能有一个缓存).

以上答案仅适用于一台机器.为了能够在许多机器上使用它,请使用memcached作为缓存解决方案.祝好运!

  • 请注意,这种方法与LINQ或LINQ to SQL并没有多大关系.基于存储库的API无法与其他LINQ查询组合. (7认同)