[英]How to pass .NET Collection of objects (Parent-Child) hierarchy to a SQL Server stored procedure
我需要將.NET集合傳遞給存儲過程。 我的收藏包含1000條記錄。 每個記錄包含2-3個其他類型的子對象。
我需要通過.NET調用存儲過程一次插入它們。
我已經嘗試過TVP(表值參數),但這根本不能滿足我的需求。
對於每個根級別記錄,我都需要通過傳遞根記錄及其相應的子記錄來調用存儲過程。 這使整個過程非常緩慢。
這就是為什么我要尋找一種方法,以便我可以一次循環通過整個層次結構列表,並在存儲過程內部通過循環和迭代子記錄來插入父子記錄。
我該如何實現?
我實際上在3周前就做了。
這里有一些帶有“真實”示例的有關過程的鏈接:
您可以使用XML將記錄及其子級傳遞給存儲過程。 例如
DECLARE @xml XML = '<root>
<parent value="213">
<child childValue="1111"></child>
<child childValue="1112"></child>
</parent>
<parent value="2313">
<child childValue="3333"></child>
<child childValue="3332"></child>
</parent>
</root>'
然后,您可以執行多種方法,其中一種方法是對記錄進行非規范化並將其保存到臨時表中以進行進一步處理
SELECT
T.c.value('parent::*/@value', 'INT') AS ParentValue,
T.c.value('@childValue', 'INT') AS ChildValue
FROM @xml.nodes('/root[1]/parent/child') T(c)
結果看起來像
ParentValue ChildValue
213 1111
213 1112
2313 3332
2313 3333
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.