You need to enable SqlCacheDependency as indicated in @RenusRusanu.
I have some working examples on my Github site , feel free to view the
code under my training projects (third-party editing)
, SqlCacheDependency:
SQL Dependency, :
, , aspnet_regsql.exe :
aspnet_regsql.exe -S server -U user -P password -d database -ed
aspnet_regsql.exe -S server -E -d database -ed
, , ,
aspnet_regsql.exe -S server
-U user -P password -d database -t tableName -et
aspnet_regsql.exe -S server
-E -d database -t tableName -et
var s = new SqlCacheDependency("AdventureWorks", "Product");
HttpContext.Current.Cache.Insert(
"products",
h,
s,
Cache.NoAbsoluteExpiration,
Cache.NoSlidingExpiration);
AdventureWorks - sql, web.config
<caching>
<sqlCacheDependency enabled="true" pollTime="30000" >
<databases>
<add
name="AdventureWorks"
connectionStringName="AdventureWorksPolling" />
</databases>
</sqlCacheDependency>
</caching>
pollTime <add ... pollTime
SqlDataSource
, DataSourceMode DataSet. ,
( )
ASPX
<asp:SqlDataSource runat="server" ID="sds"
ConnectionString="<%$ConnectionStrings:pubsConnectionString %>"
CacheDuration="30"
EnableCaching="true"
SelectCommand="select * from jobs"
DataSourceMode="DataSet"
OnSelecting="sds_Selecting">
</asp:SqlDataSource>
<div>
<asp:Literal runat="server" ID="msg" Mode="Encode"></asp:Literal>
</div>
<asp:GridView runat="server" DataSourceID="sds"></asp:GridView>
1
SqlCacheDependency, , .
aspnet_regsql -t -et..., . AspNet_SqlCacheTablesForChangeNotification, SqlCacheDependency, .
:
ALTER TRIGGER [dbo].[jobs_AspNet_SqlCacheNotification_Trigger] ON [dbo].[jobs]
FOR INSERT, UPDATE, DELETE AS BEGIN
SET NOCOUNT ON
EXEC dbo.AspNet_SqlCacheUpdateChangeIdStoredProcedure N'jobs'
END
, dbo.AspNet_SqlCacheUpdateChangeIdStoredProcedureN'jobs',
SQL, , , , , googling. .
MS SQL Server