通常在SQL中,我们可以编写此查询UPDATE users SET isAdult = 1 WHERE age >18
我想对满足实体框架核心中某些条件的所有行进行一些编辑。
我写了这段代码,但出现了错误
List<User> usersList = _context.Users.Where(u => u.age >18).ToList();
usersList.ForEach(a =>
{
a.isAdult = 1;
});
_context.Entry(usersList).State = EntityState.Modified;
_context.SaveChanges();
错误是
System.InvalidOperationException:实体类型“列表”不是 找到了。确保已将实体类型添加到模型中。在Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.GetOrCreateEntry(Object 实体) Microsoft.EntityFrameworkCore.DbContext.EntryWithoutDetectChanges [TEntity](TEntity 实体) Microsoft.EntityFrameworkCore.DbContext.Entry [TEntity](TEntity实体)
我进行了此更新,但我想知道这是否是最好的方法。
List<Users> usersList = _context.Users.Where(u => u.age >18).ToList();
usersList.ForEach(a =>
{
a.isAdult = 1;
_context.Entry(a).State = EntityState.Modified;
_context.SaveChanges();
});
答案 0 :(得分:2)
错误是因为列表未定义为EF实体。
最后,您不需要修改自己的状态。
List<User> usersList = _context.Users.Where(u => u.age >18).ToList();
usersList.ForEach(a => { a.isAdult = 1; });
_context.SaveChanges();