NHibernateでマップされた2つのクラスがあります。クラスアプリケーションは、プロパティStoreIdを持つクラスStoreを参照します。アプリケーションユーザーにはIDIDがあり、クラスStoreにはIDが割り当てられていますが、この場合はそれが問題になるとは思いません。
ApplicationUserマッピング:
<many-to-one name="Store" column="StoreId" class="Store" />
ストアマッピング:
<many-to-one name="ApplicationUser" column="Id" class="ApplicationUser"
property-ref="Store" insert="false" update="false"
fetch="join" outer-join="true" />
すべてのストアをロードすると、期待どおりにApplicationUserに対して左外部結合が生成されますが、オブジェクトグラフを作成するときに、NHibernateはSELECT ... FROM ApplicationUser WHERE StoreId = ?
ApplicationUserを参照しないすべてのストアに対して追加を行うことを決定します。
これらのApplicationUserが存在しないことをすでに知っているはずなので、これは大規模なやり過ぎであり、まったく不要です。
NHibernateがこれらの余分なクエリを生成するのを防ぐ方法を知っている人はいますか?
編集:
クラスは次のように非常に基本的です。
public class Store
{
public virtual int Id { get; set; }
// ...
public virtual ApplicationUser ApplicationUser { get; set; }
}
public class ApplicationUser
{
public virtual int Id { get; set; }
// ...
public virtual Store Store { get; set; }
}