0

このような状況があります。Spring.net と Fluent NHibernate を使用してソフトウェアを開発していますが、NHibernate の動作が非常に異常であることに気付きました。それが正しいかどうかは本当にわかりませんが、私のソフトウェアでは起こり得ません。私がデータベース上gettersにいる場合でも、NHibernate がすべての を 2 回呼び出していることに気付きました。updatingたとえば、データベースでinsertいくつかの値を取得しようとすると、プロパティの値を NHibernategetsしてデータベースに配置すると、新しいものが再びトリガーされますが、getなぜ、どのように呼び出されるのかわかりません。キャッシュから値を取得して両方の値 (データベースとキャッシュ) を比較し、更新された値をキャッシュに保存しようとしていると思います。

ところで、一部のエンティティには二次キャッシュ レベルがありますが、この状況は、この二次キャッシュ レベルを持つエンティティと持たないエンティティで発生します。

何か助けはありますか?ありがとうございました。

4

2 に答える 2

0

get を使用して NHibernate がデータベース上で選択を実行してオブジェクトを取得することを意味する場合、挿入/更新内では、オブジェクトの ID を指定し、オブジェクトがセッション内でまだ使用可能でない場合にのみ実行されます。

データベースにオブジェクトがなく、NHibernate に新しいオブジェクトを挿入させたい場合は、ID を提供せず、ID マップのジェネレーターを正しく構成します。

それ以外の場合は、プロキシを巧みに使用し、NHibernate がLoad<T>実際にデータベースにヒットするのではなく、現在のセッション スコープにプロキシを配置することで完全なオブジェクトを取得するのを防ぎます。

于 2013-09-29T12:38:46.800 に答える