2010-05-04 1 views
0

Я использую запросы LINQ в своем приложении ASP.NET MVC и хочу использовать OutputCache в некоторых своих действиях.ASP.NET MVC <OutputCache> SqlDependency (CommandNotification?) С запросами LINQ

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

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

Другой вопрос стороны: Можете ли вы сделать это с сильно видными видами?

Спасибо заранее ...

ответ

2

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

+0

Это своего рода прохладно, извините, что это так ПОЗЖЕ! – sinni800

0

Но те, кажется, идут только самостоятельно созданных SQLCommands, или я ошибаюсь?

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

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

Несомненно. Делают уведомление на:

SELECT * FROM TABLENAME; 

И если да, то как я могу прикрепить их к OutputCache?

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

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

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

+0

> Вы бы просто вызвали метод в коде вместе с запросом ... Какой метод? 'SqlDependency.Start (connectionString)' может быть? > Сделать команду Новый SqlCommand с SELECT * от TABLENAME? > создать зависимость кеша и ссылаться на него при добавлении в кеш ... Я этого не понимал .. извините ... > Инициализировать уведомления о зависимостях в global.asax.cs, как обычно. Я читаю это где-то ... У меня есть пример кода оттуда ... С обычным событием OnChange. Что это делает? И как это помогает с атрибутом OutputCache? Я полностью смущен этой темой ... – sinni800

+0

Мой первый момент: вам не нужны уведомления для пользовательских запросов. Вы можете просто вызывать все, что хотите, прямо там, а не ждать уведомления. Уведомления предназначены, когда вы хотите узнать, когда * кто-то еще * изменил данные. Да, 'Start'. Что касается того, как добавить зависимость кеша, какая часть документов MSDN на этом вам нечеткая? –

+0

Я чувствую, что есть так много способов сделать это, и я не знаю, какой путь для меня правильный. Мне не нужны уведомления для пользовательских запросов? Что тогда? У меня есть веб-сайт с контентом, который может часто меняться всеми. Что-то вроде форума. Поэтому я думаю, что здесь применяется «кто-то другой». Также я не знаю, где искать в документах MSDN. – sinni800

 Смежные вопросы

  • Нет связанных вопросов^_^