我创建了一个database
(从XML
读取和填充数据)。我是用SqlBulkCopy
做的。但是,场景是每当XML被更新(可能是插入的新记录或修改的现有记录)...thus数据库也应该更新,所以我已经创建了一个解决方案,首先所有表的所有记录都应该在数据库中删除&再次执行SqlBulkCopy
,以便数据可以被更新.
但似乎是最糟糕的方式。
是否有任何方法只更新这些记录,如果源XML
有任何新记录,也需要插入新记录?
我也尝试过一些dataset合并操作,但是我无法找到正确的方法来使用它们。
发布于 2013-03-13 23:27:53
试试这个:
将Serialize the xml添加到类对象中--您可以将其添加为该类对象的集合,即List<object>
。然后通过C# Stored Procedure调用传递xml的唯一ids (现在是序列化的记录)。可以循环遍历集合,并使用存储过程匹配每个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,这也是很好的使用。
让存储过程返回一个值或boolen,以指示数据库已成功更新。
https://stackoverflow.com/questions/15403204
复制相似问题