このようにPhotosコレクションの最初の要素のみが必要なときにPhotosコレクションを持つPropertyという名前のオブジェクトを送信する場合、このアプローチはコレクションからすべての要素をロードし、assocよりもロードしますか?私が望むように最初にだけ、またはこのアプローチが私が必要とするものであり、コレクションから最初にロードします。
public PropertyHPViewModel(Property x)
{
Id = x.Id;
Created = x.Created;
Title = x.Title;
Photo = x.Photos.First();
}
プロファイラーから生成されたSQL
SELECT photos0_.PropertyId as PropertyId1_,
photos0_.Id as Id1_,
photos0_.Id as Id1_0_,
photos0_.ImageData as ImageData1_0_,
photos0_.ImageMimeType as ImageMim3_1_0_,
photos0_.PropertyId as PropertyId1_0_
FROM Photo photos0_
WHERE photos0_.PropertyId = 129 /* @p0 */
この生成されたクエリ が20個あるので、すべて最後の行でのみ異なります。
WHERE photos0_.PropertyId = xxx /* @p0 */
番号が写真IDオブジェクトである場合、nhibernateプロファイラーに従ってこのクエリにSELECT N +1ALERTがあることを追加する必要があります。