Fremdschlüssel für Microsoft.AspNet.Identity.EntityFramework.IdentityUser?
Ich bin in VS 2013 und habe gerade eine MVC-Anwendung erstellt.
Ich erstelle ein Objekt, für das ich einen Fremdschlüssel für die AspNetUsers-Tabelle in der resultierenden Datenbank haben möchte. Das Projekt verfügt über einen ApplicationUser (abgeleitet von IdentityUser), der wie eine Eigenschaftsspaltenübereinstimmung mit der AspNetUsers-Tabelle aussieht.
Wie deklarieren wir einen Fremdschlüssel dafür richtig?
public MyObject
{
public string UserId { get; set; }
[ForeignKey("UserId")]
public ApplicationUser User { get; set;}
// other properties
}
Jetzt ändere ich ApplicationUser, um eine Sammlung von MyObjects zu haben:
public ApplicationUser : IdentityUser
{
public virtual ICollection<MyObject> MyObjects { get; set; }
}
Dies scheint zu sein, wie man eins zu viele in EF Code First macht. Wenn ich jedoch die Datenbank aktualisiere, erhalte ich die Fehlermeldung, dass für Identitätsmitglieder (IdentityUserLogin, IdentityUserRole usw.) keine Schlüssel definiert sind. Vielleicht sollten diese Klassen nicht an EF Code First Migrations teilnehmen?
Ich könnte "nach hinten" gehen und den Fremdschlüssel über SQL-Anweisungen hinzufügen, aber wenn ich erneut von Code First aus aktualisieren möchte, erhalte ich möglicherweise Fehler (dass die Datenbank derzeit nicht mit der älteren Migration übereinstimmt oder so etwas).
Wie verweisen wir ordnungsgemäß mit Fremdschlüsseln auf diese Mitgliedschaftstabellen?
Ich habe auch versucht, eine AspNetUser-Klasse mit übereinstimmenden Eigenschaften der AspNetUsers-Tabelle zu erstellen. Anstelle von "public ApplicationUser" in der Client-Klasse habe ich "public AspNetUser" deklariert. Dies führte zu einem Migrationsfehler. "Die automatische Migration wurde nicht angewendet, da dies zu Datenverlust führen würde."
Also, was ist zu tun?