C# 逐出二级缓存项Syscache/Nhibernate
我正在将NHibernate 3.3与Syscache二级缓存一起使用,并试图从二级缓存中逐出一个对象,但它似乎不起作用 我根据其他示例使用此代码:C# 逐出二级缓存项Syscache/Nhibernate,c#,caching,nhibernate,evict,syscache,C#,Caching,Nhibernate,Evict,Syscache,我正在将NHibernate 3.3与Syscache二级缓存一起使用,并试图从二级缓存中逐出一个对象,但它似乎不起作用 我根据其他示例使用此代码: var CollectionCache = NHibernateSessionFactory.Instance.GetAllCollectionMetadata(); var ClassCache = NhibernateSessionFactory.Instance.GetAllClassMetadata(); NhibernateSession
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.executeTypeOfSomeObject,SomeObjectId;似乎没有任何效果
我的用例:我正在处理分离的对象,当另一个应用程序对数据库进行更改时,我需要从二级缓存中删除这些项以保持同步。清除二级缓存nHibernate此方法适用于我:
private void ClearCache()
{
_repositoryFactory.GetSession().Clear();
var sf = _repositoryFactory.GetSession().SessionFactory;
sf.EvictQueries();
foreach (var collectionMetadata in sf.GetAllCollectionMetadata())
sf.EvictCollection(collectionMetadata.Key);
foreach (var classMetadata in sf.GetAllClassMetadata())
sf.EvictEntity(classMetadata.Key);
}