Кеширование в LLBLGENPro - PullRequest
       40

Кеширование в LLBLGENPro

0 голосов
/ 19 октября 2010

У нас есть проект, который был реализован в 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 () и получаете сущность ProductPage с коллекцией ProductContentMemberships.

Здорово, когда мы разговариваем с БД, но как мне иногда извлечь из коллекции кэшированных сущностей? Я хочу кэшировать таблицы, а затем использовать их для создания моих сложных объектов.

Я могу сделать «получить из кэша» вместо «получить из базы данных» решение, которое может принять репо, но я надеюсь, что мне не нужно писать две совершенно разные реализации GetProductPagesWithContentMemberships (): одну из дБ и один использовать кеш.

Я надеюсь, что есть какой-то магический адаптер, который я могу использовать, который будет выполнять мой linq для кеша объектов вместо того, чтобы отправлять его на сервер SQL. Есть ли такая вещь?

Этот пост: http://www.llblgen.com/tinyforum/Messages.aspx?ThreadID=6265 намекает, что это возможно, но это все.

1 Ответ

0 голосов
/ 21 октября 2010

Я боюсь, что короткий ответ - «Нет» - нет магического адаптера, который будет выполнять кэширование за вас, и LLBLGen не поддерживает любую форму кэширования, кроме использования объекта Context - но это локальнопользователю и сеансу, а не глобальному.

Статья Франса Боума о кешировании в ORM Mappers

...