我正在使用 NHibernate 3.3 和 Syscache 二级缓存,我试图从二级缓存中驱逐一个对象,但它似乎不起作用。
我正在根据其他示例使用此代码:
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);
似乎没有任何效果。
我的用例:我正在处理分离的对象,当另一个应用程序对数据库进行更改时,我需要从二级缓存中逐出这些项目以保持同步。