![](/img/trans.png)
[英]Compare List to Database records, if exists - update, if new - create (EF Core)
[英]How to update database with new & modified records?
我已經創建了一個database
(從XML
讀取和填充數據)。 我已經使用SqlBulkCopy
做到了這一點。 但是場景是每當XML更新時(可能是插入新記錄或修改現有記錄) ...因此數據庫也應更新 ,因此,我創建了一個解決方案,首先應該對所有表的所有記錄進行更新 。在數據庫中刪除並再次執行SqlBulkCopy
,以便可以更新數據……
但這似乎是最糟糕的方式。
有什么方法可以只更新那些記錄,如果源XML
有任何新記錄,則需要更新這些記錄並插入新記錄?
我也嘗試了一些數據集合並操作,但是我找不到正確的使用方法。
嘗試這個:
將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
。
讓存儲過程返回一個值或布爾值以指示數據庫已成功更新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.