Entity Framework Core的UpdateRange方法不起作用 [英] UpdateRange method of Entity Framework Core does not work

查看:155
本文介绍了Entity Framework Core的UpdateRange方法不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

我的代码是:

  var dept1 = new Department(){ID = 8名称=新设计";};var dept2 = new Department(){ID = 9名称=新研究";};var dept3 = new Department(){ID = 102,名称="New HR"};列表<部门>ModifyDept = new List< Department>(){dept1,dept2,dept3};使用(var context = new CompanyContext()){context.UpdateRange(modifiedDept);等待context.SaveChangesAsync();} 

我得到的错误是:

Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException:'数据库操作预期会影响1行,但实际上影响0行.自加载实体以来,数据可能已被修改或删除.请参见

之后

The UpdateRange method of Entity Framework Core is used here to update multiple records but it is not working.

My code is:

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();
}

And the error I get is:

Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException: 'Database operation expected to affect 1 row(s) but actually affected 0 row(s). Data may have been modified or deleted since entities were loaded. See http://go.microsoft.com/fwlink/?LinkId=527962 for information on understanding and handling optimistic concurrency exceptions.'

What should be done in this case?

解决方案

You are supposed to get data from database and modify data. Not creating new class.

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();
}

Before

After

这篇关于Entity Framework Core的UpdateRange方法不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆