私はSysCache2とNHibernate 2.1.2.4を使用しています。NHibernateは、第2レベルのキャッシュが更新されたときにエンティティを削除しないのはなぜですか?
NHibernateは、どれほど難しいかにかかわらず、エンティティの前のインスタンスをロードし続けます。
私のクラスはキャッシュ可能なReadWriteとしてマップされています。
キャッシュ領域がデフォルトです。つまり、クラスのタイプの完全な名前です。
トランザクション内ですべての操作を実行しています。
データベースが確実に更新されているため、ASP .NETのキャッシュを手動で消去すると、問題は解決しません。
私はこのように、簡単な更新をしています:
using(var transaction = NHSession.BeginTransaction())
{
var foo = Session.Load<Foo>(_fooId);
foo.Name = "A new name";
transaction.Commit();
}
をそれから私はこのように、(アプリケーション内の別のセッションで)後にエンティティをリロード:
using(var transaction = NHSession.BeginTransaction())
{
var foo = Session.Load<Foo>(_fooId);
Response.Write(foo.Name);
transaction.Commit();
}
..しかし、フーの名前はまだ古い名前ではなく、私はそれを更新した新しい名前ではありません!
こんにちは、私はログをチェックして、エンティティが更新されると無効にされていません。 – cbp