NHibernate でのイーガー ロードとレイジー ロードについては、多くのことが言われ、投稿されていることを私は知っています。マッピング中に「lazy = false」を使用する必要がある、または使用しない理由、またはHQLまたはCriteriaを使用してオブジェクトを熱心にロードするのに適していると思われる場合の方法について、スレッドと投稿と回答をすべて(嘘です!)読みました. ただし、ISession.Get メソッドを使用するときにコレクション プロパティを熱心に読み込むことについては何も見つかりませんでした。シナリオを説明しましょう。
次のような汎用リポジトリ(他のすべての特殊な子孫クラスのベース)を使用したい:
class Repository<T>
{
public T GetById(long id)
{
using (ISession session = NHibernateHelper.OpenSession())
{
return session.Get<T>(id);
}
}
}
私の質問は次のとおりです。一般的な「GetById」メソッドを(上記と同じように)使用する方法はありますか?
「NHibernateUtil.Initializeを使用するだけ」と答える人もいると思いますが、そのためには自分のエンティティを「知る」必要があり、その場合、メソッドをオーバーライドしてリポジトリの一般的な利点を失う必要があります。HQL や Criteria の使用、または「Get」の単純さを使用しないその他の方法についても同じことが言えます。その上、私は Get (または Load) メソッドの他の利点を持ちたいと思います (これにより)。
何か案が?私は何かを失いましたか?私が何について話しているのか、まったくわかりませんか (かなり可能性があります)。