Я использую NHibernate 3.3 с кешем второго уровня Syscache, и я пытаюсь вырезать объект из кеша 2-го уровня, но он, похоже, не работает.Эквивалент элементов кэша второго уровня Syscache/Nhibernate
Я использую этот код, основанный на других примерах:
var CollectionCache = NHibernateSessionFactory.Instance.GetAllCollectionMetadata();
var ClassCache = NhibernateSessionFactory.Instance.GetAllClassMetadata();
NhibernateSessionFactory.Instance.EvictQueries();
foreach (var collectionMetadata in NhibernateSessionFactory.Instance.GetAllCollectionMetadata())
NhibernateSessionFactory.Instance.EvictCollection(collectionMetadata.Key);
foreach (var classMetadata in NhibernateSessionFactory.Instance.GetAllClassMetadata())
NhibernateSessionFactory.Instance.EvictEntity(classMetadata.Key);
После выселять, то CollectionCache и ClassCache все еще имеют одинаковое количество элементов.
Также, NhibernateSessionFactory.Instance.Evict(typeof(someObject), SomeObjectId);
не имеет никакого эффекта.
Мой прецедент: я работаю с отдельными объектами, и когда другое приложение вносит изменения в базу данных, мне нужно выдворить те элементы из кеша 2-го уровня, чтобы синхронизировать их.