Oracle 从多个查询填充DTO

Oracle 从多个查询填充DTO,oracle,nhibernate,criteria,dto,Oracle,Nhibernate,Criteria,Dto,我有一个40+属性的DTO。但为了填充所有属性,我需要执行4个单独的查询。我的第一个查询负责获取基本信息。对于返回的每一行,我将根据主查询中给定的id再运行3个查询(N+1问题)。我可以设置使用急切加载,但是我加载了数千个我不需要的对象 我应该分割我的DTO并为我运行的每个查询创建一个单独的DTO,然后链接,然后根据id将它们全部绑定到一个中心DTO中吗 我正在设想这样的最终DTO public class FooDto { public string Foo { get; set; }

我有一个40+属性的DTO。但为了填充所有属性,我需要执行4个单独的查询。我的第一个查询负责获取基本信息。对于返回的每一行,我将根据主查询中给定的id再运行3个查询(N+1问题)。我可以设置使用急切加载,但是我加载了数千个我不需要的对象

我应该分割我的DTO并为我运行的每个查询创建一个单独的DTO,然后链接,然后根据id将它们全部绑定到一个中心DTO中吗

我正在设想这样的最终DTO

public class FooDto
{
    public string Foo { get; set; }
    public string Bar { get; set; }
    public FirstDto FirstQueryResults { get; set; }
    public SecondDto SecondQueryResults { get; set; }
    public ThirdDto ThirdQueryResults { get; set; }
}

有没有更好的办法解决这个问题?我使用的是Oracle,NHibernate不支持多标准。请注意,我正在加入我的大部分数据。当我需要使用一组全新的条件查询数据时,问题就来了。

创建一个视图,将数据合并在一起,一次性提供40个属性,并基于该视图创建DTO(无论DTO是什么;-)

很遗憾,我无法创建视图,因为数据库是只读的:(没关系,您(或者更确切地说,是DBA)可以在另一个模式中创建一个视图来选择(读取)来自这些表的数据。没有骰子。我们不允许在该数据库上创建任何内容,而不管模式如何。这就是为什么像nhibernate这样的ORM会有这样一个坏名声:试图连接多个表的数据而不实际连接SQL是疯狂的。你不能只编写你需要的SQL并通过nhibernate运行吗?我不明白“试图连接多个表中的数据而不实际连接SQL是疯狂的”。