entity-framework - 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 。
在这种情况下应该怎么做?
解决方案
您应该从数据库中获取数据并修改数据。不创建新课程。
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();
}
前
后
推荐阅读
- php - 如何使用 laravel 中的键值从另一个表中更新一些记录表
- jquery - 删除 http://localhost:8000/product/[object%20Object] 500(内部服务器错误)
- angular - Angular 仍在做没有 HTTPS/SSL 的 HTTP 请求
- javascript - 使用 tsc 编译后,节点找不到具有非相对路径的所需模块
- ios - 什么是快捷方式/如何在 Xcode 中编写函数后创建函数
- java - 有没有办法在调用时不调用子类方法?
- python-3.x - 如果表不存在,创建表的正确方法是什么。Flask-SQLAlchemy
- mongodb - 集合上的差分操作
- mysql - 如何设置名称 latin1 以在 VB.NET 中工作
- sql - 强制并行联合执行