Я тестирую новый NHibernate 5.0 (5.1.3) AsQueryable ()
Пытался:
var myList = session.Load<MyObject>(1).MyList.AsQueryable()
.Where(x => x.Prop == "123")
.ToList();
Я получил 3 Sql Server хитов (используя профиль NHibernate):
(1) SELECT * from tblObject where Id = 1
(2) SELECT * from tblMyList where MyObjectId = 1 and Prop = '123'
(3) SELECT * from tblMyList where MyObjectId = 1
Насколько я понимаю, будет сгенерирован только второй SQL. Я что-то здесь упускаю?
Отображение MyList:
m.Bag(x => x.MyList, list =>
{
list.Key(k => k.Column("Id"));
list.Cascade(Cascade.All | Cascade.DeleteOrphans);
list.Inverse(true);
list.Table("tblMyList");
});
Редактировать (Добавлено несколько тестов)
Как мне подсказал Роман, я провел несколько тестов без отладки
session.Load<MyObject>(1); // No query
session.Load<MyObject>(1).MyList // Query 1
session.Load<MyObject>(1).MyList.AsQueryable() // Query 1 and 2
.Where(x => x.Prop == "123")
.ToList();