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