0

我创建了一个database(从 a 读取和填充数据XML)。我已经用SqlBulkCopy. 但是这种情况是每当更新 XML 时(可能是插入新记录或修改现有记录) ......因此数据库也应该更新,所以我创建了一个解决方案,首先所有表的所有记录都应该是在数据库中删除并再次执行SqlBulkCopy,因此可以更新数据......

但这似乎是最糟糕的方式。

XML有没有办法只更新那些记录,如果源有任何新记录,则需要插入新记录?

我也尝试了一些数据集合并操作,但我想不出正确的方法来使用它们。

4

1 回答 1

1

试试这个:

将 xml 序列化为类对象 - 您可以将其添加为此类对象的集合,即List<object>. 然后通过C# 存储过程调用传递 xml 的唯一 ID(现在是序列化记录)。您可以遍历集合并使用存储过程匹配每个 id。如果来自 xml 的记录不是太多,这可能会影响性能。

在存储过程中做一个IF SELECT Count(*)... > 0. 如果它返回的值大于 0 则记录存在:

IF(SELECT COUNT(*) FROM table where uniqueid = @id) > 0)
BEGIN
    UPDATE table ... WHERE uniqueid = @id
END
ELSE
BEGIN
   INSERT INTO table (...) VALUES(...)
END 

或者使用MERGE INTO它也很好用。

让存储过程返回一个值或布尔值以指示数据库已成功更新。

于 2013-03-14T07:27:53.167 回答