L'impossibilité de modifier db entrées à l'aide de EFCore, EntityState.Modifié: “opération de Base de données devrait avoir sur 1 ligne(s) mais en fait affecté 0 ligne(s).”

Je suis en utilisant l'Identité de Base 1.0 ASP.NET MVC Core 1.0 et Entity Framework Core 1.0 pour créer un utilisateur simple système d'enregistrement avec cet article comme un point de départ, et je suis en train d'ajouter des rôles d'utilisateur. Je peux ajouter des rôles d'utilisateur, mais je ne suis pas en mesure de les modifier. Voici la Edit action dans le 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();
        }
    }

Voici le formulaire dans la vue correspondante:

@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" />
}

Le nouveau nom de rôle n'est pas enregistrer dans la base de données, et j'obtiens l'exception suivante: 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.

J'ai été en mesure d'utiliser ce code exact (avec le Microsoft.AspNet.Identity.EntityFramework de dépendance au lieu de EntityFrameworkCore) pour modifier les entrées de base de données à l'aide de EF 7, de l'Identité 3, etc.

Des idées sur pourquoi ce code ne sera pas permettre à la base de données entrées-elle être modifiée?

OriginalL'auteur jmk22 | 2016-09-13