Я пытался выяснить, почему этот запрос с просьбой о менеджере и его или ее команде возвращает только первую запись коллекции Team. По-видимому, это потому, что у меня был FirstOrDefault в конце запроса. Я был под впечатлением, что FirstOrDefault применимо к запросу в целом, но похоже, что оно применяется и к коллекции Team.Почему эти два Свободных nHibernate-запроса дают разные результаты?
Оригинал запроса (показан только первый член в команде):
session.Query<IEmployee>()
.Where(p => p.PersonalNumber == PersonalNumber)
.Fetch(p => p.Team)
.Fetch(p => p.Manager)
.FirstOrDefault();
Новый запрос, который возвращает полную команду:
session.Query<IEmployee>()
.Where(p => p.PersonalNumber == PersonalNumber)
.Fetch(p => p.Team)
.Fetch(p => p.Manager)
.ToList().FirstOrDefault();
Что бы правильный способ сформулировать этот запрос? Моя потребность в обходном пути подразумевает, что я не делаю этого правильно.
фона - отображения:
Это основной иерархическая связь с менеджером будучи IEmployee и Team будучи IList из IEmployee.
References(x => x.Manager).Column("ManagerId");
HasMany(x => x.Team)
.AsList(index => index.Column("TeamIndex"))
.KeyColumn("ManagerId");
Вы можете сказать, из сгенерированного SQL, как это происходит потому, что запрос проблема генерирует SQL «FETCH NEXT, 1 ROWS ONLY», который предположительно означает, что только первый присоединиться к записи будут возвращены. Мне непонятно, как заставить FirstOrDefault правильно работать с Fetch. – kasey