LINQ to SQL репозиторий - кэширование данных - PullRequest
1 голос
/ 12 мая 2010

Я построил свое первое решение MVC и использовал шаблон репозитория для извлечения / вставки / обновления моей базы данных.

Я сейчас нахожусь в процессе рефакторинга, и я заметил, что многие (фактически все) методы в моем хранилище каждый раз обращаются к базе данных. Это кажется излишним, и в идеале я бы хотел «кэшировать» основной объект данных, например 'GetAllAdverts' из базы данных, а затем запросить у этого кэшированного объекта такие вещи, как 'FindAdvert (id), AddAdvert (), DeleteAdvert () и т. Д.'

Мне также необходимо рассмотреть возможность обновления / удаления / добавления записей в этот объект кэша и базу данных.

Как лучше всего подходить для этого?

Мое знание этого типа вещей минимально, и я действительно ищу совет / руководство / учебное пособие, чтобы указать мне правильное направление.

Заранее спасибо.

1 Ответ

0 голосов
/ 22 сентября 2010

Это просто поразило мой радар, и я предполагаю, что вы уже решили проблему. Но если нет, я бы посмотрел в предварительно скомпилированные запросы LINQ. Примерно так:

        private static Func<SomeDataContext, int, PersonDto> _getPersonByIdQuery =
       CompiledQuery.Compile<SomeDataContext, int, PersonDto>(
           (dataContext, personId) =>
               dataContext.PersonDtos.where(c => c.PersonId == personId).FirstOrDefault()
               );

Поместите нечто подобное в ваш текстовый текст, затем добавьте туда внутренний метод, чтобы вызывать его, вызывать его. Ваш ретривер / заставка затем вызовет внутренний метод. Имеет ли это смысл? Я могу выложить больше кода, если это необходимо ..

Удачи,

Justin

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...