0

我们有一个在 linq to sql 中实现的项目,并且正在使用适配器模式迁移到 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() 并获取带有 ProductContentMemberships 集合的 ProductPage 实体。

当我们与数据库交谈时这很好,但有时我如何从缓存实体集合中提取?我想缓存这些表,然后用它们来构建我的复杂对象。

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

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

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

4

1 回答 1

0

恐怕简短的回答是“不”——没有魔法适配器可以为你做缓存,而且 LLBLGen 不支持除了使用 Context 对象之外的任何形式的缓存——但这些对用户来说是本地的和会话,而不是全局。

Frans Bouma 撰写的关于 ORM 映射器中缓存的文章

于 2010-10-21T19:57:20.410 回答