Заполните DTO из нескольких запросов - PullRequest
1 голос
/ 08 октября 2010

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

Должен ли я разделить свой 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 не поддерживает мультикритерии. Обратите внимание, что я присоединяюсь к большей части своих данных. Проблема возникает, когда мне нужно запросить данные с полным новым набором критериев.

1 Ответ

2 голосов
/ 12 октября 2010

Как насчет создания VIEW, объединяющего данные для предоставления 40 свойств за один раз, и основывающего на этом ваш DTO - каким бы он ни был; -)

...