我最近将我的Linq提供程序升级到新的AST。 (NuGet上的NH3)
使用之前的提供程序,我使用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....
语句。
一旦我升级了我的提供程序,我发现了很多select语句 被解雇了。 (我的预测对象比上面的更复杂)。 我来到了Fetch / FetchMany,这可能有助于这个数字 查询,但据我所知,这意味着完整的对象将 为我需要的每个平坦的场地回来。
有没有办法可以获得投影选择所需的最小列数,而不是将完整的对象图加载到项目中?
谢谢, 克里斯
答案 0 :(得分:1)
它必须与您对结果的使用有关(比如迭代IQueryable很多次),映射有些奇怪,或者从示例中删除了一些复杂性。
我刚刚尝试了那个确切的查询,并且只生成了一个SQL语句。