2010-10-19 41 views
0

我们有一个在linq to sql中实现的项目,并且正在使用适配器模式迁移到LLBLGenPro运行时。在LLBLGENPro中缓存

该应用程序的第一个版本做了大量的缓存,将整个表放入httpcache中,然后在代码隐藏中完成所有链接。 (叹气)

所以你喜欢的东西:现在

from p in MyCacheObject.ProductPages 
join cmpp in MyCacheObject.ProductContentMemberships on p.ProductPageId equals cmpp.ProductContentId 
join pl in MyCacheObject.ProductPlans on cmpp.ProductLinkId equals pl.ProductPlanId       

,在我们的新库的模式,我可以建立这样的连接与预取路径。您只需调用myRepository.GetProductPagesWithContentMemberships()并获得一个ProductPage实体和一个ProductContentMemberships集合。

当我们谈论数据库时,这非常棒,但是我有时候如何从一组缓存实体中抽取数据呢?我想缓存这些表格,然后使用它们来构建我的复杂对象。

我可以让“从缓存中获取”与“从数据库中获取”做出回购可以做出的决定,但我希望我不必编写两个完全不同的GetProductPagesWithContentMemberships()实现:从数据库和一个使用缓存。

我希望有一种神奇的适配器,我可以使用它将执行我的linq对象缓存而不是将其发送到SQL服务器。有这样的事吗?

这篇文章:http://www.llblgen.com/tinyforum/Messages.aspx?ThreadID=6265暗示这是可能的,但就是这样。

+0

你有没有问过这个在LLBLGEN支持论坛 - 你应该得到的支持团队的一个相当快速的响应。 – Matt 2010-10-19 20:23:52

+0

我辩论过,因为我知道法兰斯读取堆栈 – 2010-10-19 20:44:09

回答

0

简单的答案恐怕是“否” - 没有适合您的缓存,并且LLBLGen不支持除使用Context对象之外的任何形式的缓存 - 但这些是本地的用户和会话,而不是全局的。

Article by Frans Bouma about caching in ORM Mappers

+0

是的,我想这就是答案。我希望将自定义适配器挂接到对象集合很容易。我怀疑它仍然是可能的,如果我想自己重载适配器,但这可能超出了范围。 – 2010-10-22 16:17:40

+0

三年后,情况发生了变化:结果集缓存和linq代码很容易使用:https://www.llblgen.com/documentation/4.0/LLBLGen%20Pro%20RTF/Using%20the%20generated%20code /gencode_resultsetcaching.htm – Daniel 2013-07-17 15:46:02