Par*_*roX 5 c# sql-server asp.net sqlcachedependency sql-server-2012
我阅读的几乎每个教程似乎都错误地设置了SqlCacheDependency。我相信他们通常会将过时的轮询方法与查询通知方法混合在一起。
这是许多示例中的两个:
根据我的测试,如果您正在使用代理(MSSQL 2015+),则无需进行任何.config更改,也不需要进行任何SqlCacheDependencyAdmin调用(无需定义表等)。
我简化只是做...
SqlDependency.Start(connString)
...
queryString = "SELECT ...";
cacheName = "SqlCache" + queryString.GetHashCode();
...
using (var connection = new SqlConnection(connString))
{
connection.Open();
var cmd = new SqlCommand(queryString, connection)
{
Notification = null,
NotificationAutoEnlist = true
};
var dependency = new SqlCacheDependency(cmd);
SqlDataReader reader = cmd.ExecuteReader();
try
{
while (reader.Read())
{
// Set the result you want to cache
data = ...
}
}
finally
{
reader.Close();
}
HostingEnvironment.Cache.Insert(cacheName, data, dependency);
}
Run Code Online (Sandbox Code Playgroud)
(不包括检查缓存是否为空的代码,因为这只是设置。我只想显示缓存的设置)
这似乎有效,无需定义查询中涉及哪些表并在每个表上进行复杂的触发器。它只是工作。
更令我惊讶的是,进行查询的规则具有通知功能:
为了进行测试,我让它运行一个查询1000次,涉及一个名为“ Settings”的表。然后,我更新表中的值并重复查询。
我在探查器中查看了涉及“设置”一词的所有查询,并且看到查询只执行了1次(以设置缓存),然后发生了更新语句,然后又重新执行了一次查询(缓存)无效,查询再次运行)
我担心,在2-3个小时的努力中,我会丢失一些东西,这真的很简单吗?
我真的可以只输入我想要的任何查询,它就可以工作吗?我正在寻找做危险/非标准或我缺少的小字样的任何指针
| 归档时间: |
|
| 查看次数: |
157 次 |
| 最近记录: |