nhibernate linq: проекция на DTO и столбцы - PullRequest
3 голосов
/ 15 ноября 2010

Я недавно обновил свой провайдер Linq до нового AST. (NH3 на NuGet)

С предыдущим провайдером я использовал linq для выполнения «встроенных проекций» в мой DTO " например

from o in Session.Query<MyObject>() 
select new MyObjectDTO { 
Name = o.Name, 
SubName = o.OtherObject.Name, 
Sub2NAme = o.OtherObject2.Name 
} 

и это сгенерирует

SELECT o.Name, sn1.Name, sn2.Name FROM ..... 
JOIN.... JOIN....

заявление.

Как только я обновил свой провайдер, я обнаружил, что выстрелил (Мой проектируемый объект более сложный, чем выше). Я наткнулся на Fetch / FetchMany, которые могут помочь с номером запросов, но, насколько я могу судить, это означает, что полный объект будет возвращайся для каждого сплющенного поля, которое мне нужно.

Есть ли способ получить наименьшее возможное количество столбцов, необходимое для выбора проекции, вместо загрузки полного графа объекта в проект с помощью?

Спасибо, Крис

1 Ответ

1 голос
/ 15 ноября 2010

Это должно быть что-то с использованием вами результата (например, многократное повторение IQueryable), что-то странное с отображениями или некоторая сложность, которая была удалена из примера.

Я только что попробовал этот точный запрос, и был сгенерирован только один оператор SQL.

...