0

我有一个 XML 文件,其中几乎没有类似类型的节点。这些节点中的每一个都将有子节点。要求是我需要将主节点的数据插入到特定表中,并将其每个子表数据插入到特定子表中,并将外键设置为第一次插入的主键。XML 类似于以下示例,

       <XML>
          <Provider>
              <providerID>1</ProviderID>
              .
              .
              .
              <ContactInfo>
                 <Address>address1</Address>
                 .
                 .
              </ContactInfo>                  
          </Provider>
           <Provider>
              <providerID>2</ProviderID>
              .
              .
              .
              <ContactInfo>
                 <Address>Address2</Address>
                 .
                 .
              </ContactInfo>                 
          </Provider>   

确切的要求是我需要先将提供者数据插入 Table1,然后我需要将每个提供者中的 ContactInfo 与 Table1 的 PK 一起插入到 Table2 中,作为 Table2 的 FK,......

如何在 c#.net 中有效地实现这一点,避免复杂的循环?任何人都请帮我解决这个问题......

4

1 回答 1

1
Declare @xml xml
Set @xml = 
'<XML>
<Provider>
    <providerID>1</providerID>
    <ContactInfo>
        <Address>address1</Address>
    </ContactInfo>                  
</Provider>

<Provider>
    <providerID>2</providerID>
    <ContactInfo>
        <Address>address2</Address>
    </ContactInfo>                  
</Provider>

</XML>'

Select 
X.T.value('(providerID)[1]', 'int'),
X.T.value('(ContactInfo/Address)[1]', 'varchar(100)')
From @xml.nodes('/XML/Provider') as X(T)

好的。现在您已经获得了从 xml 中提取数据的查询。首先将所有这些记录插入到临时表中。

完成后,插入第一个表。完毕?现在插入连接记录(连接第一个表和临时表以从第一个表中获取主键值)。

最后,将第二个临时表插入到第二个表中。

于 2012-08-04T07:45:16.340 回答