2010-10-08 94 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