1

私はこれよりも関係をロードするためのより良い方法を見つけようとしています:

result = session.Get<Author>(id);
Course course = result.Courses.FirstOrDefault();

私は次のようにQueryOverAPIでこれを行うことができます:

result = session.QueryOver<Author>()
                .Where(item => item.Id == id)
                .Fetch(item => item.Courses).Eager
                .SingleOrDefault();

同じSQLが生成されると思いますが、冗長すぎます。

以下のようなことをする方法はありますか?

session.Fetch(result, author => author.Courses);
4

1 に答える 1

1

Getはマッピングによって駆動されます。それが本当に理にかなっている場合は、マッピングを変更します(ただし、私はそれを行いません)。構築されたマッピングのランタイムスイッチはありません。

私の経験から、Get(id)中のいくつかのselectステートメントは問題ではありません...そしてN + 1の場合、あなたはすでにあなたの質問でより良い解決策を示しています。

イーガーの読み込みに関する興味深い読み物: http://nhforge.org/wikis/howtonh/lazy-loading-eager-loading.aspx

于 2013-02-11T05:49:55.477 に答える