2014-02-20 5 views
2

Я знаю, что могу создать собственный атрибут outputcache для действия контроллера ASP.NET MVC. Я хотел бы изменить продолжительность выходного кэша в зависимости от того, прошло ли событие или нет. Если он прошел текущую дату, продолжительность будет намного больше. Однако мне нужно проверить базу данных, чтобы сделать это, однако я делаю тот же самый вызов в самом действии контроллера. Нужно ли в любом случае установить длительность в конце результата действия, чтобы она зависела от даты события, которое было запрошено внутри действия контроллера? Я не хочу делать два вызова, один из атрибутов кэша вывода и действия контроллера.Изменение кэша вывода в зависимости от даты, найденной в базе данных

ответ

1

Вы должны использовать SqlCacheDependency класс для этого, например:

ВИД:

<%@ OutputCache Duration="3600" SqlDependency="Northwind:Employees" VaryByParam="none" %> 

Web.config:

<caching> 
     <sqlCacheDependency enabled = "true" pollTime = "60000" > 
     <databases> 
      <add name="northwind" 
      connectionStringName="Northwind" 
      pollTime="9000000" 
      /> 
     </databases> 
     </sqlCacheDependency> 
    </caching> 

В приведенном выше примере показан ASP .NET Web.config файл, который позволяет использовать зависимости на основе таблиц базы данных SQL Server ta BLE.

+0

Можете ли вы объяснить немного больше, может ли это работать с Entity Framework? –

+1

Зависимости sql не связаны с EF. Это все, что связано с SQL-сервером. Для серверов до 2005 года ASP.net проверяет таблицу на SQL-сервере для изменений. при внесении изменений вы обновляете эту таблицу, возможно, используя триггеры. для> = 2005, он использует собственное изменение отслеживания в SQL Server, чтобы сообщить, что asp.net что-то изменилось. –

+0

@MikeFlynn Я надеюсь, что комментарий Саймона Хэлси помог вам. –