Я использую LINQ для реализации IQueryable от NHibernate на сетке mvc asp.net (особенно для 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, роль =, TABLENAME = [Свойства], tableAlias = property1 , происхождение = MyClass
myclass0_, colums = {myclass0_.PropertyGuid
, Имя класса = Свойство}}]
[.Count (.Fetch (.ThenBy (.OrderBy (NHibernate.Linq.NhQueryable`1 [МойКласс],
Цитата ((s,) => (s.Property.Name)),),
Цитировать ((s,) => (s.Name)),), Цитировать ((x,
) => (x.Property)),),)]
Я знаю, что он пытается сказать мне, что я не могу охотно извлекать Property, потому что MyClass не находится в select, но проблема в том, что Count () фактически вызывается через Grid и обрабатывается извне из моего кода .
Все, что мне нужно сделать, это дать сетке IQueryable, и он должен уметь обрабатывать страницы, сортировку и т. Д. Сам по себе.
Кто-нибудь еще должен был обойти эту проблему с помощью NHibernate Fetching и как вы ее решили?