我有这个有很多相关记录的实体。当Web客户端保存时,它会发送JSON分层模型。模型看起来像这样:
Product[].properties
.SET1[].properties
.SET2[].properties
.SETA[].properties
.SETA[].SETb[].properties
当我去保存时,我有以下流程:
Grab DB Product that matches current
Update Properties
Grab and loop through set 1 from DB
If not found in "to save" set, delete item from set 1
If found, update it
Grab and loop through set 2 from DB
If not found in "to save" set, delete item from set 2
If found, update it
While we are in Set 2, grab all Set A from DB
If not found in "to save" set, delete it from set A
If found, update it
While we are in Set A, grab all Set b in DB
If not found in "to save" set, delete it from set b
If found, update it
Now go back through and insert any in local set not in DB
这必须是我见过的更糟糕的更新算法。任何人都有更好的代码或链接,可能会更简单一点?目前正在使用C#
答案 0 :(得分:1)
您需要做的是找到一种方法来获取单个查询中的所有记录。您可以这样做的方法是使用表示层次结构的路径。这方面的一个例子是:
产品1,代码为PROD1
属性1,代码为PROD1-PROP1
属性2,代码为PROD1-PROP2
第1组的属性1,代码为PROD1-SET1-PROP1
第1组的属性2,代码为PROD1-SET1-PROP2
等
现在,您可以通过获取以“PROD1-”路径开头的所有属性来获取所有属性。然后,在您一次性检索到产品1的所有属性后,您可以在内存中执行所有突变并将所有更改存储在一个批次中。