2010-10-08 4 views
1

У меня есть DTO с 40 + свойствами. Но для заполнения всех свойств мне нужно выполнить 4 отдельных запроса. Мой первый запрос связан с получением базовой информации. Для каждой возвращаемой строки я запускаю еще 3 запроса на основе идентификатора, указанного в основном запросе (проблема N + 1). Я могу настроить загрузку, но затем загружаю тысячи объектов, которые мне не нужны.Заполнение DTO из нескольких запросов

Должен ли я разделить мой DTO и создать отдельный DTO для каждого запроса, который я запускаю, тогда ссылка затем связать их все вместе в центральный DTO по id?

Я предвидел окончательный 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

Как о создании VIEW, который объединяет данные, чтобы дать 40 свойств все на одном дыхании, и основывая свой DTO на том, что - независимо от DTO может быть ;-)

+0

К сожалению, я не могу создать представление потому что база данных доступна только для чтения. :( – Mike

+0

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

+0

Нет костей. Нам не разрешено создавать что-либо в этой базе данных, независимо от схемы. – Mike

Смежные вопросы