. NET CORE 3.1, MVC Asyn c метод не обновляет БД - PullRequest
0 голосов
/ 14 апреля 2020

AI я просто перехожу к ASYN C методам и пытаюсь обновить мои данные. Я могу выбрать просто найти, чтобы я знал, что хранилище работает.

Действие

    [HttpPost]
    public async Task<IActionResult> EditTeam(EmployeeVm empVm)
    {
        if (!ModelState.IsValid)
        {
            ModelState.AddModelError("", _errorUpdateMsg);
        }
        else
        {
            if (await _teamRepository.UpdateEmployee(empVm.Employee))
            {
                return RedirectToAction("Index");
            }

            ModelState.AddModelError("", _errorUpdateMsg);
        }

        return View(empVm);
    }  

Мой конструктор в репо

    public TeamRepository(EnvisionDbContext envisionDbContext)
    {
        _envisonDbContext = envisionDbContext;
    }

Вот мое обновление, которое не сохраняет

    public async Task<bool> UpdateEmployee(Employee employee)
    {
        var result = await _envisonDbContext.Employees.FirstOrDefaultAsync<Employee>(e => e.Id == employee.Id);

        if (result != null)
        {
            result.FirstName = employee.FirstName;
            result.LastName = employee.LastName;
            result.Phone = employee.Phone;
            result.IsActive = employee.IsActive;

            await _envisonDbContext.SaveChangesAsync();

            return true;
        }

        return false;
    }

Заранее спасибо за помощь.

ОБНОВЛЕНО: Если я добавлю это, это работает. Это потому, что два ожидающих вызова отключены?

            result.IsActive = employee.IsActive;
            _envisonDbContext.Entry(result).State = EntityState.Modified;

1 Ответ

0 голосов
/ 14 апреля 2020

Похоже, вы забыли метод обновления до сохранения изменений

if (result != null)
    {
        result.FirstName = employee.FirstName;
        result.LastName = employee.LastName;
        result.Phone = employee.Phone;
        result.IsActive = employee.IsActive;

        _envisionDbContext.Update(result); //paste it before you save changes

        await _envisonDbContext.SaveChangesAsync();

        return true;
    }
...