質問

NHibernate を使用して Web アプリケーションを開発しています。次の SQL クエリに対する NHibernate クエリの作成方法を教えてください。

SELECT v1.Id
FROM VIEW v1
LEFT JOIN VIEW v2 ON v1.SourceView = v2.Id
ORDER BY v1.Position

基本的には自動結合ですが、Nhibernate でこれを記述する方法がわかりません。プロパティ名がテーブルの列名と同じであるとします。

役に立ちましたか?

解決

元のエンティティに対して選択を実行し、2 つのオブジェクト間の関連付けを「lazy = false」にするだけです。エンティティがマップされている限り、両方が返されるため、オブジェクトにアクセスしようとしたときに遅延読み込み例外が発生することはありません。

「lazy=false」をマップしたくない場合は、結果を反復処理して、ある種の操作 (null かどうかを尋ねるなど) を実行することもできます。if(v1.AssocatedObject == null){}) を使用して、セッションが開いている間にデータが確実にロードされるようにします。

アップデート:

実際には、コレクションをさまようことなく初期化できる NHibernateUtil.Initialise() よりも優れたものがあると思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top