检查XML文件中的PK是否与数据库中的PK相似
本文关键字:PK 数据库 相似 是否 检查 XML 文件 | 更新日期: 2023-09-27 18:29:33
使用C#.Net
我制作了一个程序,可以将SQL server数据库中的表导出为XML文件。然后,我将对XML文件进行更改,并将其导入数据库。
我目前正在开发的新程序将检查我的XML文件,并将其与DB上的同一个表进行比较。如果XML文件上的主键与DB上的主键相同,它将删除XML文件中的行,则具有不同PK的其余行将被导入。
我正在使用SqlBulkCopy将表从XML导入数据库。问题是,我不知道如何从XML中获取主键,并将其与DB上的主键进行比较。
示例XML结构:
<NewDataSet>
<Table>
<DeviceId>1</DeviceId>
<DeviceTypeId>1</DeviceTypeId>
<Disabled>false</Disabled>
</Table>
</NewDataSet>
假设一个XML结构为:
<NewDataSet>
<Table>
<DeviceId>1</DeviceId>
<DeviceTypeId>1</DeviceTypeId>
<Disabled>false</Disabled>
</Table>
</NewDataSet>
您可以使用一个简单的LINQ到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());
}
其中identifier
是PK名称。这假设