【问题标题】:update multiple tables in one go in EF dbcontext在 EF dbcontext 中一次更新多个表
【发布时间】:2018-08-25 05:00:54
【问题描述】:

我在 EF 示例中没有遇到任何地方,但是一次更新多个表是否安全,如下所示

using(var db = new MyDbContext(opts))
{
  var record = db.Record.FirstOrDefault(x => x.Id == id);

  if(record == null) return;

  record.FieldN = ...

  db.Update(record);

  db.Other.RemoveRange(db.Other.Where(x => x.EntityId == id));

 db.SaveChanges();
}

【问题讨论】:

    标签: c# entity-framework asp.net-core-1.1


    【解决方案1】:

    是的,它是安全的。

    db.SaveChanges() 将在原子事务中执行所有 UPDATE / INSERT / DELETE 查询。它将使用当前事务或创建一个新事务。

    【讨论】:

      【解决方案2】:

      是的,但有时 EF 会以错误的顺序执行您所要求的内容并且它会爆炸,例如删除 2 个依赖于另一个的事物。

      解决方案是通过多次调用 SaveChangesAsync() 将它们分开(您应该真正使用它而不是 SaveChanges)。

      【讨论】:

      • 我不确定依赖项将如何影响删除?在上述情况下,多次调用是指两个using(var db =..)
      猜你喜欢
      • 1970-01-01
      • 2021-11-23
      • 2015-05-17
      • 2020-12-09
      • 2018-09-22
      • 2017-01-24
      • 2013-06-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多