我需要为一个表实现SqlCacheDependency,这将依赖于这个查询:
SELECT Nickname FROM dbo.[User].
我为此创建了一个方法:
private IEnumerable<string> GetNicknamesFromCache()
{
const String cacheValueName = "Nicknames";
var result = HttpRuntime.Cache.Get(cacheValueName) as List<String>;
if (result == null)
{
result = _repository.GetAllNicknames();
var connectionString = ConfigurationManager.ConnectionStrings["RepositoryContext"].ConnectionString;
var sqlConnection = new SqlConnection(connectionString);
var sqlCommand = new SqlCommand("SELECT Nickname FROM dbo.[User]", sqlConnection);
var sqlDependency = new SqlCacheDependency(sqlCommand);
HttpRuntime.Cache.Insert(cacheValueName, result, sqlDependency);
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行我的应用程序时,它不起作用.我检查了订户列表(sys.dm_qn_subscriptions表),没有记录.
我调查了很多时间,并且已经尝试了各种解决方案,但它们对我不起作用:
使用可信连接并为公共角色设置一些权限:
GRANT CREATE PROCEDURE TO public
GRANT CREATE QUEUE TO public
GRANT CREATE SERVICE TO public …
现在我有一个动态分配数组内存的算法:
这是用于动态内存分配的相当快的算法,尽管将元素复制到新分配的数组的额外开销.
什么是更快,List<T>或基于阵列的这种算法?你会建议使用什么?
确实List<T>使用简单数组作为内部数据结构?