Мы пытаемся реализовать SqlCacheDependency и, добавляя зависимость через хранимую процедуру, удаляем объект сразу после добавления его в кэш. Это дает CacheItemRemovedReason как 4.
Мы использовали образец синхронизации базы данных, представленный в упомянутомссылка ниже.
http://www.alachisoft.com/resources/samples/
string storedProcName = "dbo.TestStoredProc1";
SqlCmdParams sqlParams = new SqlCmdParams();
sqlParams.Value = prod.ProductID;
//sqlParams.
Dictionary<string, SqlCmdParams> prms = new Dictionary<string, SqlCmdParams>();
prms.Add("ID", sqlParams);
_cache.Add(prod.ProductID.ToString(), item,DSWriteOption.None,null);
item.Dependency = new SqlCacheDependency (connString, "select * from dbo.state_lookup где state_id =" + prod.ProductID.ToString ());
Database Synchronizationpublic void OnCacheDataModification(string key, CacheEventArg args)
{
switch (args.EventType)
{
case EventType.ItemAdded:
// Key has been added to the cache
Console.WriteLine(key + " Item Added");
break;
case EventType.ItemUpdated:
Console.WriteLine(key + " Item Updated");
break;
case EventType.ItemRemoved:
break;
}
Я добавил слушателя изменения элемента, и он сразу переходит в раздел ItemRemoved после перехода в деталь ItemAdded. Обратный вызов удаленного элемента должен вызываться только при изменении данных в базе данных.
Версия SQL Server: Microsoft SQL Server 2008 R2 (SP2)
Alachisoft Edition: пробная версия Enterprise
Версия Alachisoft SDK: 4.9.1.1