큰 결과 집합을 얻기 위해 아래와 같은 쿼리를 사용한다고 가정 해 보겠습니다.db를 쿼리하는 데 사용한 SqlCacheDependency에 대해 동일한 쿼리를 지정해야합니까?
Select UserID,FirstName, LastName, City, Age from UserInfo where DateDiff(d,GetDate,LastActiveOn) > 180
이제 쿼리에 의해 반환 된 각 개체를 캐시하고 변경 될 때 개체를 무효화하려고합니다. 그래서 사용자 객체 (DTO)로 설정 위의 결과를 각각의 결과를 캐스팅하고 그들에게 캐시를 추가하는 동안 다음과 같이 종속성을 추가
while (reader.Read())
{
var user = new UserInfo(reader, false);
float distance;
if (float.TryParse(reader["Distance"].ToString(), out distance))
{
user.Distance = distance;
}
//Add user to Cache
string userQuery = "SELECT UserID,FirstName,MiddleName,LastName FROM mydb.dbo.UserInfo where UserID=" + user.UserId.ToString();
var cacheDependencyCmd = new SqlCommand(userQuery, con);
SqlCacheDependency jobSeekerDependency = new SqlCacheDependency(cacheDependencyCmd);
TimeSpan timeLeftToExpiration = user.LastActive.AddDays(180) - DateTime.Now;
DateTime itemExpirationDate = DateTime.Now.AddDays(timeLeftToExpiration.Days);
string key = "u-" + user.UserId.ToString();
this.Context.Cache.Insert(key,user.UserId.ToString() + user.LastActiveString , jobSeekerDependency, itemExpirationDate, Cache.NoSlidingExpiration, CacheItemPriority.Normal, new CacheItemRemovedCallback(ItemRemovedCallBack));
을하지만이 작동하지 않습니다. sys.dm_qn_subscriptions에는 레코드가 없습니다. 이벤트 로그에 더 이상 오류가 없습니다 (나는 어제 그것을 얻었고이를 해결하기 위해 적절한 조치를 취함) SQL 프로파일 러를 살펴보면 SqlQueryNotification 저장 프로 시저가 2 분마다 실행된다는 것을 알 수 있습니다.
그래서 종속성이 생성되지 않은 이유가 궁금합니다. 종속성을 생성하기 위해 다른 쿼리를 사용하고 있기 때문입니까?