0

Syscache 第 2 レベル キャッシュで NHibernate 3.3 を使用しており、第 2 レベル キャッシュからオブジェクトを削除しようとしていますが、うまくいかないようです。

私は他の例に基づいてこのコードを使用しています:

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 レベルのキャッシュから削除して同期を維持する必要があります。

4

1 に答える 1