ASP.NET MVC <OutputCache>SqlDependency (CommandNotification?) С запросами LINQ - PullRequest
0 голосов
/ 04 мая 2010

Я использую запросы LINQ в своем приложении ASP.NET MVC и хочу использовать OutputCache в некоторых моих действиях.

Я слышал, что это возможно с помощью CommandNotifications. Но они, похоже, относятся только к самосозданным командам SQLC, или я ошибаюсь?

Могу ли я вручную указать SQL-серверу отправлять уведомления SQLDependency при изменении определенных таблиц? И если да, как я могу прикрепить их к OutputCache?

Еще один побочный вопрос: можете ли вы сделать это с сильно типизированными представлениями?

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

Ответы [ 2 ]

2 голосов
/ 02 августа 2010

Вы можете сделать снимок проекту LinqToCache . Он выполняет именно то, о чем вы просили, перехватывает SqlDependency на любом запросе LINQ, если запрос, отправляемый на SQL Server, соответствует ограничениям Уведомление о запросе . Для Linq-to-SQL это в основном состоит из указания полного имени из двух частей для таблиц в конструкторе модели (т. Е. dbo.Table не только Table). К сожалению, для Linq-to-EF способ, которым EF выбирает форматирование запроса, несовместим с ограничениями QN.

0 голосов
/ 04 мая 2010

Но они, похоже, предназначены только для самодельных команд SQLC, или я ошибаюсь?

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

Могу ли я вручную указать серверу SQL отправлять уведомления SQLDependency при изменении определенных таблиц?

Конечно. Сделать уведомление о:

SELECT * FROM TABLENAME;

И если да, как я могу прикрепить их к выходному кэшу?

Создайте команду, создайте зависимость кеша и ссылайтесь на нее при добавлении в кеш. Инициализируйте уведомления о зависимостях в global.asax.cs как обычно.

Можете ли вы сделать это с сильно типизированными представлениями?

Не имеет смысла. В MVC вы не должны делать доступ к данным в представлении.

...