2010-10-08 49 views
1

我有一个具有40多个属性的DTO。但为了填充所有属性,我需要执行4个单独的查询。我的第一个疑问是负责获取基本信息。对于返回的每一行,我都会根据主查询中给出的id(N + 1问题)运行3个更多查询。我可以设置使用急切的加载,但然后我加载了成千上万的我不需要的对象。从几个查询中填充DTO

我应该拆分我的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不支持多标准。请注意,我加入了大部分数据。当我需要用一套完整的新标准查询数据时,问题就出现了。

回答

2

如何创建连接数据让所有一气呵成40种性质的图,其上立足的DTO - 任何一个DTO可能是;-)

+0

不幸的是,我不能创建一个视图因为数据库是只读的。 :( – Mike 2010-10-12 14:16:04

+0

没关系,你(或者更确切的说是DBA)可以在另一个架构中创建一个视图,以便从这些表中选择(读取)数据。 – 2010-10-12 14:56:59

+0

没有骰子。不管架构如何,我们都不允许在该数据库上创建任何内容。 – Mike 2010-10-12 16:13:33