Я использую реализацию IQueryable от LINQ to NHibernate в сетке asp.net mvc (в частности, telerik), где, как я знаю, мне нужно будет что-то с нетерпением получить для этой конкретной сетки.
Итак, у меня есть запрос, который выглядит примерно так:
var query = from s in repository.Query<MyClass>()
orderby s.Property.Name, s.Name
select s;
query = query.Fetch(x => x.Property);
Теперь, если я выполняю query.ToList (), все в порядке, и я могу проверить, работает ли он в интеграционном тесте.
Это круто.
Однако, если я выполняю query.Count () или что-то еще, что объединяет запрос, я получаю исключение:
Запросом указана выборка соединения, но владелец выбранной ассоциации не присутствует в списке выбора [FromElement {явное, не соединение коллекции, соединение выборки, получение неленивых свойств, classAlias = 0, role =, tableName = [Свойство], tableAlias = property1, origin = MyClass myclass0_, colums = {myclass0_.PropertyGuid, className = Property}}] [.Count (.Fetch (.ThenBy (.OrderBy (NHibernate.Linq.NhQueryable`1 [MyClass], Цитата ((s,) => (s.Property.Name)),), Цитата ((s,) => (s.Name)),), Цитата ((x,) => (x .Имущество)), ), )]
Я знаю, что он пытается сказать мне, что я не могу с нетерпением получить свойство, потому что MyClass не находится в списке выбора, но проблема в том, что Count () на самом деле вызывается через сетку и обрабатывается извне из моего кода.
Все, что мне нужно сделать, это предоставить сетке IQueryable, и она должна сама обрабатывать разбиение по страницам, сортировку и т. Д.
Кому-нибудь еще приходилось решать эту проблему с помощью NHibernate Fetching, и как вы ее решили?