Entity Framework Core的UpdateRange方法不起作用 [英] UpdateRange method of Entity Framework Core does not work
问题描述
此处使用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屋!