Как обновить список из нескольких записей так же, как обычный запрос SQL Update, используя ядро ​​Entity Framework? - PullRequest
0 голосов
/ 07 июля 2019

Обычно в 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 (объектная сущность) в Microsoft.EntityFrameworkCore.DbContext.EntryWithoutDetectChanges [TEntity] (сущность TEntity) в Microsoft.EntityFranttent [101] TEntity [101] TEnt]1013 *

Я сделал это обновление, но я хочу знать, является ли это лучшим способом.

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();
                });

1 Ответ

2 голосов
/ 07 июля 2019

Ошибка была в том, что список не определен как объект EF.

В конце концов, вам не нужно изменять состояние самостоятельно.

List<User> usersList = _context.Users.Where(u => u.age >18).ToList(); 
usersList.ForEach(a => { a.isAdult = 1; });
 _context.SaveChanges();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...