ASP.NET-Identität mit EF Database First MVC5

Ist es möglich, die neue Asp.net-Identität mit Database First und EDMX zu verwenden? Oder erst mit Code?

Folgendes habe ich getan:

1) Ich habe ein neues MVC5-Projekt erstellt und mit der neuen Identität die neuen Benutzer- und Rollentabellen in meiner Datenbank erstellt.

2) Ich habe dann meine Database First EDMX-Datei geöffnet und in die neue Identity Users-Tabelle gezogen, da ich andere Tabellen habe, die sich darauf beziehen.

3) Beim Speichern des EDMX erstellt der Database First POCO-Generator automatisch eine Benutzerklasse. UserManager und RoleManager erwarten jedoch, dass eine Benutzerklasse vom neuen Identitätsnamespace (Microsoft.AspNet.Identity.IUser) erbt, sodass die Verwendung der POCO-Benutzerklasse nicht funktioniert.

Ich vermute, eine mögliche Lösung besteht darin, meine POCO-Generierungsklassen so zu bearbeiten, dass meine Benutzerklasse von IUser erbt.

Oder ist ASP.NET Identity nur mit Code First Design kompatibel?

++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++

Update: Nach dem Vorschlag von Anders Abel habe ich Folgendes getan. Es funktioniert, aber ich frage mich, ob es eine elegantere Lösung gibt.

1) Ich habe meine Entitätsbenutzerklasse erweitert, indem ich eine Teilklasse im selben Namespace wie meine automatisch generierten Entitäten erstellt habe.

namespace MVC5.DBFirst.Entity
{
    public partial class AspNetUser : IdentityUser
    {
    }
}

2) Ich habe meinen DataContext so geändert, dass er von IdentityDBContext anstelle von DBContext erbt. Beachten Sie, dass Sie jedes Mal, wenn Sie EDMX aktualisieren und die DBContext- und Entity-Klassen neu generieren, dies wieder auf diesen Wert zurücksetzen müssen.

 public partial class MVC5Test_DBEntities : IdentityDbContext<AspNetUser>  //DbContext

3) In Ihrer automatisch generierten Benutzerentitätsklasse müssen Sie das Überschreibungsschlüsselwort zu den folgenden 4 Feldern hinzufügen oder diese Felder auskommentieren, da sie von IdentityUser geerbt werden (Schritt 1). Beachten Sie, dass Sie jedes Mal, wenn Sie Ihre EDMX aktualisieren und die DBContext- und Entity-Klassen neu generieren, dies auf diesen Wert zurücksetzen müssen.

    override public string Id { get; set; }
    override public string UserName { get; set; }
    override public string PasswordHash { get; set; }
    override public string SecurityStamp { get; set; }

Antworten auf die Frage(9)

Ihre Antwort auf die Frage