Делаю обычный CRUD контроллер. Просто не делал этого на ASP раньше. Вот я загрузил модель допустим:
[HttpPost("update")]
public async Task Update(int id, [FromBody] Person newModel)
{
using (var db = new ApplicationContext())
{
var model = await db.Persons.Where(p => p.Id == id).FirstAsync();
}
}
Подскажите как мне теперь данные перекинуть из модели полученной запросом в модель которую я достал из базы? Можно конечно просто присвоить все поля вручную, но мне кажется или это такое себе решение? А если бы у меня полей было 10+? Неудобно же...
EntityFramework отслеживает состояние всех своих объектов во внутренних списках и реагирует на них. Надо EntityFramework сказать явно переписать состояние внутреннего объекта на внешний. Делается это методом Attach:
[HttpPost("update")]
public async Task Update(int id, [FromBody] Person newModel)
{
using (var db = new ApplicationContext())
{
db.Persons.Attach(newModel);
db.ObjectStateManager.ChangeObjectState(newModel, EntityState.Modified);
await db.SaveChangesAsync();
}
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей