代码之家  ›  专栏  ›  技术社区  ›  Wouter

行插入顺序实体框架

  •  14
  • Wouter  · 技术社区  · 17 年前

    我正在使用一个事务在多个表中插入多行。对于这些行,我想按顺序添加这些行。调用SaveChanges时,所有行都按顺序插入。

    2 回复  |  直到 17 年前
        1
  •  10
  •   Alex James    17 年前

    例如,如果在新类别中插入新产品,我们必须在产品之前添加类别。

    在上下文中做事的顺序可能与这些规则相冲突。例如,如果您这样做:

    ctx.AddToProducts(
       new Product{
          Name = "Bovril",
          Category = new Category {Name = "Food"}
       }
    );
    

    其效果是,产品首先被添加(到上下文中),然后当我们浏览图表时,我们也添加了类别。

    i、 e.上下文中的插入顺序为:

    Product
    Category
    

    但由于引用完整性约束,在尝试插入数据库之前,我们必须像这样重新排序:

    Category
    Product
    

    所以这种局部重新订购是不可协商的。

    然而,如果没有像这样的局部依赖,理论上可以保持顺序。不幸的是,我们目前没有跟踪“何时”向上下文中添加了某些内容,并且出于效率原因,我们没有跟踪实体以保持列表等结构的顺序。因此,我们目前无法保留不相关插入的顺序。

    然而,我们最近还在讨论这个问题,所以我很想知道这对你们有多重要?

    亚历克斯

    项目经理实体框架团队

        2
  •  1
  •   Nick Negulescu Nick Negulescu    16 年前

    添加(testObject);

    我目前不能保证在运行“SaveChanges”时获得相同的订单。这很遗憾,因为我的列表对象(即链表)知道它的创建顺序。使用引用链接在一起的对象必须以相同的顺序保存到数据库中。不知道你为什么提到你正在“辩论”这个问题。=)

    推荐文章