Я знаю, что могу создать собственный атрибут outputcache для действия контроллера ASP.NET MVC. Я хотел бы изменить продолжительность выходного кэша в зависимости от того, прошло ли событие или нет. Если он прошел текущую дату, продолжительность будет намного больше. Однако мне нужно проверить базу данных, чтобы сделать это, однако я делаю тот же самый вызов в самом действии контроллера. Нужно ли в любом случае установить длительность в конце результата действия, чтобы она зависела от даты события, которое было запрошено внутри действия контроллера? Я не хочу делать два вызова, один из атрибутов кэша вывода и действия контроллера.Изменение кэша вывода в зависимости от даты, найденной в базе данных
2
A
ответ
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.
Можете ли вы объяснить немного больше, может ли это работать с Entity Framework? –
Зависимости sql не связаны с EF. Это все, что связано с SQL-сервером. Для серверов до 2005 года ASP.net проверяет таблицу на SQL-сервере для изменений. при внесении изменений вы обновляете эту таблицу, возможно, используя триггеры. для> = 2005, он использует собственное изменение отслеживания в SQL Server, чтобы сообщить, что asp.net что-то изменилось. –
@MikeFlynn Я надеюсь, что комментарий Саймона Хэлси помог вам. –