实体框架4:更有效的方法来保存分层模型

时间:2010-11-07 05:47:05

标签: c# entity-framework-4

我有这个有很多相关记录的实体。当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#

1 个答案:

答案 0 :(得分:1)

您需要做的是找到一种方法来获取单个查询中的所有记录。您可以这样做的方法是使用表示层次结构的路径。这方面的一个例子是:

  • 产品1,代码为PROD1

    • 属性1,代码为PROD1-PROP1

    • 属性2,代码为PROD1-PROP2

      • 第1组的属性1,代码为PROD1-SET1-PROP1

      • 第1组的属性2,代码为PROD1-SET1-PROP2

现在,您可以通过获取以“PROD1-”路径开头的所有属性来获取所有属性。然后,在您一次性检索到产品1的所有属性后,您可以在内存中执行所有突变并将所有更改存储在一个批次中。