Ich erstelle eine einfache Bewerbung für die Universität, in der ein Student eine Art von Anfrage stellen kann, die dann von einem Mitarbeiter mit besonderer Spezialisierung bearbeitet wird.
Ich möchte das standardmäßige MVC5-Identitätssystem verwenden und die ApplicationUser-Klasse mithilfe des TPH-Musters erweitern. Also habe ich dem ApplicationUser die allgemeinen Eigenschaften hinzugefügt:
%Vor%Dann habe ich zwei Klassen erstellt, die den ApplicationUser erben:
%Vor%Was ich derzeit möchte, ist, dass beide Arten von Benutzern sich als Basisidentität registrieren und beide in einer einzigen Tabelle behalten, wie in Vererbung Beispiel auf asp.net
Wie ich dachte, würde es ausreichen, Benutzer var in AccountController zu initialisieren, das dann als Student oder als Mitarbeiter an den UserManager übergeben wird. Aber nachdem ich versucht habe, mich als Student zu registrieren, bekomme ich diese Ausnahme:
%Vor%Meine Kontextklasse:
%Vor%und ein Teil der Aktion des Controllers:
%Vor%Ich habe versucht, ApplicationClass auf eine abstrakte Klasse zu setzen, aber kein Glück. Jede Hilfe wäre willkommen.
UPDATE: Das Problem lag nicht im Code selbst. Ich habe die Datenbank einfach nicht gelöscht (oder aktualisiert), nachdem ich diese Änderungen am Modell vorgenommen hatte. Danach klappt alles gut.
@ Dragonheart: Ich habe diese Repro versucht und es würde gut funktionieren, wenn Sie die DBSet-Deklarationen in Ihrer Kontextklasse entfernen. Der IdentityDbContext behandelt Ihr TPH-Muster und fügt eine Diskriminatorspalte in die Tabelle ein, um die untergeordneten Klassen zu unterscheiden.
Wenn ApplicationUser
von IdentityUser
übernommen wird, entferne es aus deiner DbContext
-Klasse. Auf der anderen Seite ist es nicht notwendig, eine abstract
-Klasse zu erstellen (Sie können erstellen, wenn Sie verhindern, dass ein Benutzer erstellt wird, außer aus den Klassen Student
oder Employee
. Weitere Informationen finden Sie unter Tabelle-pro-Hierarchie .
Für Register
part, versuche so etwas:
Hoffe, das hilft ...
Tags und Links entity-framework asp.net-identity asp.net-mvc-5 tph