現在、異なるテーブルから要素を出力するために、ストアドプロシージャ内の結合を使用しています。私は定型コードの多くを維持する必要があるため、積極的な例複数の結果セットをT-SQLの結合と組み合わせた
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#のコード内のエンティティへの出力をマッピングする場合で動作するようにかなり不便になっています。 代わりに、私は各結果セットをコード内のオブジェクト型にマップできるように、複数の結果セットを使用します。 しかし、異なる結果がすべて互いに関連する私のケースでは、これを達成するためにどうすればよいでしょうか?私が見つけた例は、私のような外部キーによってデータが関連していなかった別のテーブルから選択することを中心にしています。私は複数の結果で私の結果を出力リレーした場合もっとたくさんの文を参加がありますから、より多くのineffecient(私は仮定だろう、私が思い付くことができる唯一のことは、この
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文を書く方法を知りません。そして
私は私のコードで複数の結果を消費する方法を知っていると私はできれば、私はORMを使用します。しかし、すべてのデータベースアクセスがストアドプロシージャを使用する必要があります。私は私のストアドプロシージャを使用するSQLにlinqを使用しますが、それは本当に私にORMの完全な力を与えるものではありません。私の質問は、実際にストアドプロシージャで複数の結果セットを返すことが実際に可能な場合です。 – Xorandor
私は理解できません。複数の結果セットが必要ですか?参加する必要がある場合は、参加してください。または、結果セットから作成したオブジェクトを外部キーを使用したdbのように1対多の方法でリンクしたいのですか? – gjvdkamp
あなたが達成したいと思うもののもう少しサンプルコードと、あなたが遭遇する問題がここで助けになります。 – gjvdkamp