Я получаю сообщение об ошибке: DbUpdateConcurrencyException
Я использую обновление таблицы IdentityRole. Я использую ViewModel для отображения и захвата данных, а затем передаю их обратно в моем OnPost (). Данные поступают в мое свойство IdentityRole, как и ожидалось. Я убедился, что первичный ключ скрыт в форме. Я также пробовал _context.Update (Role) в сочетании с SaveChanges (), и я всегда получаю ту же ошибку. Я также гарантировал, что у меня есть [BindProperty] как для моих свойств ViewModel, так и для моих свойств IdentityRole.
Вот мой контроллер или код позади.
public IActionResult OnPost()
{
Role.Name = RoleViewModel.RoleName;
Role.NormalizedName = RoleViewModel.RoleName.ToUpper();
Role.ConcurrencyStamp = DateTime.Now.ToString();
if (!ModelState.IsValid)
{
return Page();
}
_context.Entry(Role).Property(x => x.Name).IsModified = true;
_context.Entry(Role).Property(x => x.NormalizedName).IsModified = true;
_context.Entry(Role).Property(x => x.ConcurrencyStamp).IsModified = true;
_context.SaveChanges();
return Redirect("/Admin/HomeRole");
}
Моя ViewModel
public class EditRoleViewModel
{
public EditRoleViewModel()
{
Users = new List<string>();
}
public string Id { get; set; }
[Required(ErrorMessage = "Role Name is required")]
public string RoleName { get; set; }
public List<string> Users { get; set; }
}
Вот форма
<form method="post" class="mt-3">
<input asp-for="RoleViewModel.Id" type="hidden" />
<input asp-for="RoleViewModel.Users" type="hidden" />
<div class="form-group row">
<label asp-for="RoleViewModel.RoleName" class="col-sm-2 col-form-label"></label>
<div class="col-sm-10">
<input asp-for="RoleViewModel.RoleName" class="form-control">
<span asp-validation-for="RoleViewModel.RoleName" class="text-danger"></span>
</div>
</div>
</form>