Take + FetchMany + возвращает неожиданные результаты - PullRequest
1 голос
/ 21 ноября 2011

Я пытаюсь выяснить, как сделать Take и FetchMany вместе.

var c = session.Query<Table1>().Take(5).FetchMany(x => x.Table2).ToList();

Я ожидаю, что это вернет 5 строк из Table1 и несвязанный результат из Table2.Вместо этого я получаю одну строку обратно из Таблицы 1 и 5 строк из Таблицы 2.

var c = session.Query<Table1>().Take(1000).FetchMany(x => x.Table2).ToList();

Я получаю 309 записей из Таблицы 1 (всего 6200 записей).

Я не понимаю, как nhibernate решил вернуть столько записей.

1 Ответ

4 голосов
/ 21 ноября 2011

Хорошо, я не производитель, но как это влияет на ваш код, но fetchmany перенесет весь набор результатов в память и затем возьмет указанное подмножество.

используйте joinqueryover или joinalias для достижения того же самого.

var c = session.Query<Table1>().Take(5).FetchMany(x => x.Table2).ToList();

это становится

Table2 table2Alias=null;
var c = session.QueryOver<Table1>().JoinAlias(x => x.Table2,()=>table2Alias).Take(5).ToList();

дайте мне знать, если это сработает для вас .. или вы можете вместо этого написать запрос HQL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...