如何解决C#实体框架:使用Where和Join进行批量更新
如何在Entity Framework Core中使用Join和Where子句更新某些记录?使用下面的模板答案(附加/ isModified)? https://stackoverflow.com/a/44247720/12425844
“如果您不想使用SQL语句,则可以使用Attach方法来更新实体,而不必先加载它。默认情况下,它作为Unchanged附加。您需要调用make {{ 1}}“
当前要求:
isModified = true
目标代码: 必须添加位置并加入以查找特定记录:
https://stackoverflow.com/a/44247720/12425844
var data = _dbContext.Set<Product>()
.Include(c => c.ProductType)
.Where(x => x.Manufacturer == "ABC Company" &&
x.StartYear == 2019 &&
x.ProductType.ProductTypeDescription == "Electronics")
data.Manufacturer = "XYZ Company";
data.StartYear = 2020;
_dbContext.SaveChangesAsync();
使用EF Net Core 3.1
目前仅使用本机EF Core,将不接受使用Raw sql或EF扩展的答案
解决方法
如果没有EF扩展,EFCore.BulkExtensions怎么办?
await _dbContext.Set<Product>()
.Where(x => x.Manufacturer == "ABC Company" &&
x.StartYear == 2019 &&
x.ProductType.ProductTypeDescription == "Electronics")
.BatchUpdateAsync(x => new Product(){
Manufacturer = "XYZ Company",StartYear = 2020 });
注意更新是作为原始sql执行的,加载到变更跟踪器中的对象不会更新。您可能希望将大容量操作和SaveChangesAsync
包围在事务中。
YMMV,我自己没有使用过这个库。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。