@DailyDDose

EntityFramework — Частичное обновление строки в таблице?

Доброго дня.

Есть простая таблица в базе
CREATE TABLE [dbo].[Users]
(
    [Id] INT NOT NULL PRIMARY KEY, 
    [FirstName] VARCHAR(50) NOT NULL, 
    [LastName] VARCHAR(50) NOT NULL, 
    [Age] INT NOT NULL
)


Как правильно написать метод контроллера для обновление одной(или более колонок) ?
[HttpPatch]
        public ActionResult Patch([FromBody]User userData)
        {
            var user = Db.Users.FirstOrDefault(entity => entity.Id== userData.Id);
            if (userTokenData == null)
            {
                return null;
            }
 
            user.FirstName = userData.FirstName; // ??
            Db.SaveChanges();
            return Json(user);
        }


Чтобы можно было отсылать запросы вида:
{ Id: 1, Age: 42 }
Обновиться должна только колонка Age

{ Id: 1, FirstName: "Alex", LastName: "Ander" }
Обновиться должны колонки FirstName и LastName
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
yarosroman
@yarosroman
C# the best
_context.Entry(userData).State = EntityState.Modified;
 try
{
    await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
    if (!Db.Users.Any( a => a.Id==userData.Id))
    {
        return NotFound();
    }
    else
    {
        throw;
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы