Я использую Identity Core 1.0 с ASP.NET MVC Core 1.0 и Entity Framework Core 1.0 для создания простой системы регистрации пользователей с этой статьей в качестве отправной точки, и я пытаюсь добавить роли пользователей. Я могу добавлять роли пользователей, но не могу их редактировать. Вот действие Edit
в RolesController
:
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Edit(IdentityRole role)
{
try
{
_db.Roles.Attach(role);
_db.Entry(role).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
_db.SaveChanges();
return RedirectToAction("Index");
}
catch (Exception ex)
{
Console.WriteLine(ex);
return View();
}
}
Вот форма в соответствующем представлении:
@model Microsoft.AspNet.Identity.EntityFramework.IdentityRole
@{
ViewBag.Title = "Edit";
}
<h2>Edit Role</h2>
<hr />
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.Id)
<div>Role name</div>
<p>@Html.TextBoxFor(model => model.Name)</p>
<input type="submit" value="Save" />
}
Имя новой роли не сохраняется в базе данных, и я получаю следующее исключение: Database operation expected to affect 1 row(s) but actually affected 0 row(s). Data may have been modified or deleted since entities were loaded.
Database operation expected to affect 1 row(s) but actually affected 0 row(s). Data may have been modified or deleted since entities were loaded.
Я смог использовать этот точный код (с зависимостью Microsoft.AspNet.Identity.EntityFramework
вместо EntityFrameworkCore
) для редактирования записей базы данных с использованием EF 7, Identity 3 и т.д.
Любые мысли о том, почему этот код не позволяет изменять записи в базе данных?