此处使用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 go.microsoft/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方法不起作用
发布评论