В настоящее время я использую соединения внутри моих хранимых процедур для вывода элементов из разных таблиц. Агрессивный пример
select a.*, b.*, c.*, d.*, e.*, f.* from tableA a
join tableB b on a.id = b.foreignid
join tableC c on b.id = c.foreignid
join tableD d on c.id = d.foreignid
join tableE e on d.id = e.foreignid
join tableF f on e.id = f.foreignid
where a.id = 1
Работать с отображением сущностей в моем коде на C # становится довольно неудобно, поскольку мне приходится поддерживать много шаблонного кода.
Вместо этого я хотел бы использовать несколько наборов результатов, чтобы сопоставить каждый набор результатов с типом объекта в коде.
Но как мне добиться этого, если в моем случае разные результаты будут связаны друг с другом? Все примеры, которые мне удалось найти, вращались вокруг выбора из разных таблиц, где данные не были связаны внешними ключами, такими как мой. Если бы я выдал свой результат в несколько наборов результатов, единственное, что я могу придумать, это что-то вроде этого
select a.* from tableA
where a.id = 1
select b.* from tableB
join tableA a on a.id = b.foreignid
where a.id = 1
select c.* from tableC
join tableB b on b.id = c.foreignid
join tableA on a.id = b.foreginid
where a.id = 1
select d.* from tableD
join tableC c on c.id = d.foreignid
join tableB b on b.id = c.foreignid
join tableA a on a.id = b.foreignid
where a.id = 1
select e.* from tableE
join tableD d on d.id = e.foreignid
join tableC c on c.id = d.foreignid
join tableB b on b.id = c.foreignid
join tableA a on a.id = b.foreignid
where a.id = 1
select f.* from tableF
join tableE e on e.id = f.foreignid
join tableD d on d.id = e.foreignid
join tableC c on c.id = d.foreignid
join tableB b on b.id = c.foreignid
join tableA a on a.id = b.foreignid
where a.id = 1
Но это не чище, намного неэффективно (я бы предположил, так как есть гораздо больше операторов объединения)
Можно ли использовать несколько наборов результатов таким образом, я пытаюсь? Я просто не знаю, как написать SQL-операторы в хранимых процессах без необходимости выполнять массовые объединения для набора результатов, как в примере. И с текущим решением я получаю взрыв колонн, так как я соединяю их всех вместе