Я знаю, что вы можете выполнить запрос Linq to NHibernate в будущем, вызвав метод расширения .ToFuture <> (). Однако я не загружаю сопоставленные объекты, а непосредственно загружаю данные в DTO. Таким образом, вы получите что-то вроде:
var results = (from e in session.Query<Entity>()
where e.Reference.Id == someId
orderby e.Name
select new Dto
{
Id = e.Id,
Name = e.Name,
// ...
}).ToFuture<Dto>();
Это не работает так, как я хочу (смею сказать, ожидается ). Теперь я получаю сообщение об ошибке: The value "System.Object[]" is not of type "Entity" and cannot be used in this generic collection.
Если я удаляю .ToFuture()
, это работает, но запрос не пакетируется.
Я знаю, что вы можете сделать это с помощью API QueryOver, мне просто нравится Linq to NH, потому что он намного чище кода.