SqlCacheDependency с LINQ2SQL (шаблон репозитория) - PullRequest
1 голос
/ 29 ноября 2011

Я использую шаблон репозитория L2S в своем веб-приложении ASP.Net 3.5.Но я не совсем доволен выступлением, которое испытал вживую.Я искал в Google и наткнулся на кэширование SQL с использованием класса SqlCacheDependency.Но у меня нет ни одного учебного пособия или ссылки, которая объясняет, как использовать его в моем сценарии.

Так что помогите мне, ребята ... Любая помощь или руководство будут высоко оценены.используйте некоторые примеры кодов или онлайн-ссылки ....

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

Обновление: мой репозиторий

public interface IRepository<T> where T : class
{
    T GetById(int id);
    IQueryable<T> GetAll();
    void SaveOrUpdate(T entity);
    void DeleteOnSubmit(T entity);
}

Ответы [ 2 ]

0 голосов
/ 30 ноября 2011

Вы не описали, как вы используете linq to sql с вашим репозиторием. По сути, вы повторно используете один и тот же DataContext для всех репозиториев, созданных во время одного запроса, или каждый репозиторий получает свой собственный экземпляр DataContext? Если это последнее, вы теряете внутреннюю кешируемость DataContext.

Еще одна область, где производительность может быть улучшена, это если у вас есть какие-либо часто используемые запросы, которые содержат много слоев объединений (а не только один выбор таблицы). Использование CompiledQuery здесь значительно ускорит процесс. Скомпилированные запросы нужно генерировать только при первом использовании, в противном случае запрос перекомпилируется при каждом его использовании.

0 голосов
/ 29 ноября 2011

Иногда linq-to-sql делает запросы неожиданным образом. Вы проверяли, как ваши linq запросы переводятся в sql? Используйте Sql Server Profiler (доступно в меню инструментов на сервере управления SQL), чтобы проверить сгенерированные запросы. Я написал некоторую информацию об этом здесь .

Как только вы узнаете, что у вас сгенерированы хорошие запросы, вам следует проверить, не является ли выполнение любого из них узким местом в производительности. Здесь также может помочь профилировщик. Если некоторые запросы выполняются медленно, попробуйте добавить соответствующие индексы.

Если у вас нет сайта с большим объемом, эти шаги должны обеспечить хорошую производительность без необходимости кэширования.

...