2014-02-20 18 views
2

我知道我可以爲ASP.NET MVC控制器操作創建一個自定義outputcache屬性。我想根據事件是否已經通過來改變輸出緩存的持續時間。如果它已經通過了當前日期,那麼持續時間將會更長。不過,我需要檢查一個數據庫來做到這一點,但我在控制器動作本身內進行相同的調用。有沒有辦法在動作結果的末尾設置持續時間,因此它取決於在控制器動作中查詢的事件的日期?我不想做兩個調用,一個在輸出緩存屬性和控制器操作中。根據數據庫中發現的日期修改輸出緩存

回答

1

你應該利用SqlCacheDependency類,例如:

VIEW:

<%@ 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我希望Simon Halsey的評論對你有所幫助。 –