0

使用 C# .Net

我制作了一个程序,将表从 SQL 服务器数据库导出到 XML 文件。然后我将对 XML 文件进行更改并将其导入回数据库。

我目前正在处理的新程序将检查我的 XML 文件并将其与数据库上的同一张表进行比较。如果 XML 文件上的主键与 DB 上的主键相同,它将删除 XML 文件中的行,其余具有不同 PK 的行将被导入。

我正在使用 SqlBulkCopy 将表从 XML 导入数据库。问题是我不知道如何从 XML 中获取主键并将其与 DB 上的主键进行比较。

示例 XML 结构:

<NewDataSet> 
    <Table>
      <DeviceId>1</DeviceId>
      <DeviceTypeId>1</DeviceTypeId>
      <Disabled>false</Disabled>
    </Table>
</NewDataSet>
4

1 回答 1

0

假设 XML 结构为:

<NewDataSet> 
   <Table>
     <DeviceId>1</DeviceId>
     <DeviceTypeId>1</DeviceTypeId>
     <Disabled>false</Disabled>
   </Table>
</NewDataSet>

您可以使用简单的LINQ to XML查询从 XML 中获取DeviceId(PK):

var id = (from n in xml.Root.Elements("Table")
          select n.Element("DeviceId").Value).SingleOrDefault();

回报:1

编辑*如果您的每个表都有不同的 PK 列名,那么您需要重写此或编写特定于每个表的数据访问代码:

public static int GetTablePK(string identifier)
{
    return Convert.ToInt32((from n in xml.Root.Elements("Table")
          select n.Element(indentifier).Value).SingleOrDefault());
}

identifierPK名称在哪里。这假定表具有类似的 XML 结构

于 2013-08-30T08:17:31.497 回答