首页 > 解决方案 > Entity Framework Core 的 UpdateRange 方法不起作用

问题描述

此处使用 Entity Framework Core的UpdateRange方法来更新多条记录,但它不起作用。

我的代码是:

var dept1 = new Department()
{
    Id = 8,
    Name = "New Designing"
};

var dept2 = new Department()
{
    Id = 9,
    Name = "New Research"
};

var dept3 = new Department()
{
    Id = 102,
    Name = "New HR"
};

List<Department> modifiedDept = new List<Department>() { dept1, dept2, dept3 };

using (var context = new CompanyContext())
{
    context.UpdateRange(modifiedDept);
    await context.SaveChangesAsync();
}

我得到的错误是:

Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException:'数据库操作预计会影响 1 行,但实际上影响了 0 行。自加载实体以来,数据可能已被修改或删除。有关理解和处理乐观并发异常的信息,请参阅http://go.microsoft.com/fwlink/?LinkId=527962 。

在这种情况下应该怎么做?

标签: entity-frameworkasp.net-coreentity-framework-core

解决方案


您应该从数据库中获取数据并修改数据。不创建新课程。

using (var context = new JobContext())
{
    var depts = context.Department.Where(x => x.Id > 1).AsQueryable();
    depts.Where(x => x.Id == 2).FirstOrDefault().Name = "New Designing";
    depts.Where(x => x.Id == 3).FirstOrDefault().Name = "New Research";
    depts.Where(x => x.Id == 4).FirstOrDefault().Name = "New HR";

    context.UpdateRange(depts);
    context.SaveChanges();
}

在此处输入图像描述

在此处输入图像描述


推荐阅读