2010-10-19 58 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