2014-02-26 10 views
18

ich den Rat in this question gefolgt meine ASP.NET Identitäts Tabellen umbenennen:Doppelte Fremdschlüssel, wenn Tabellen ASP.NET Identität Umbenennung

modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaim"); 
modelBuilder.Entity<IdentityUserRole>().ToTable("UserRole"); 
modelBuilder.Entity<IdentityUserLogin>().ToTable("UserLogin"); 
modelBuilder.Entity<IdentityRole>().ToTable("Role"); 
modelBuilder.Entity<IdentityUser>().ToTable("User"); 
modelBuilder.Entity<ApplicationUser>().ToTable("User"); 

Jedoch resultiert dies in zwei Eigenschaften für die UserClaim auf Benutzer Beziehung - UserId und IdentityUser_Id:

enter image description here

gibt es eine Möglichkeit, dieses Problem beheben?

+1

Ein Fremdschlüssel einer Primärschlüssel Worum geht es? –

+1

Das Problem hier ist, dass das UserId-Feld das ist, das der Fremdschlüssel nicht die automatisch generierte 'IdentityUser_Id' sein sollte, damit die Fremdschlüsselbeziehung mit der Tabelle Benutzer unterbrochen wird. Ich bin auf dieses Problem gestoßen, habe es aber nie geschafft, es mit meinen benutzerdefinierten Namen an Ort und Stelle zu verlassen. Ich musste auf den Standardnamen zurücksetzen. Wenn Sie es herausgefunden haben, lassen Sie es mich wissen, oh, noch eine Sache, die ich nicht zurücksetzen konnte der Fremdschlüssel, der die fließende API verwendet. @MarkHomer – a7madx7

+1

@Mark 'IdentityUser_Id' sollte nicht da sein, da es ein unnötiges Duplikat von' UserId' ist. 'UserId' sollte der Fremdschlüssel sein. – Jonathan

Antwort

25

Sie sollten die folgende Zeile überspringen, dann funktioniert es sehr gut:

modelBuilder.Entity<IdentityUser>().ToTable("User"); 

So ist die einzige Abbildung Sie brauchen:

modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaim"); 
modelBuilder.Entity<IdentityUserRole>().ToTable("UserRole"); 
modelBuilder.Entity<IdentityUserLogin>().ToTable("UserLogin"); 
modelBuilder.Entity<IdentityRole>().ToTable("Role"); 
modelBuilder.Entity<ApplicationUser>().ToTable("User"); 

Hoffnung, das hilft.

+0

Hunted hoch und niedrig für eine Lösung für dieses Problem! Arbeitete perfekt, vielen Dank –

+0

Verbrachten viel zu lange auf diesem. Ich habe versucht, meine eigenen Fremdschlüssel hinzuzufügen und konnte nicht glauben, dass es eine einfache Änderung war. Dieser [SO Beitrag] (http://stackoverflow.com/questions/19460386/how-can-i-change-the-table-names-when-using-visual-studio-2013-aspnet-identi) lässt mich glauben es war erforderlich. –

+2

Es gab ein [MSDN Blog] (https://blogs.msdn.microsoft.com/webdev/2013/10/16/customizing-profile-information-in-asp-net-identity-in-vs-2013-templates /) (siehe Kommentarabschnitt @Giang), der Codebeispiel zum Umbenennen der 'AspNetUsers '-Tabelle hatte, von der ich glaube, dass sie viele Leute gesehen haben, was sie dazu gebracht hat,' modelBuilder.Entity () hinzuzufügen ");' war der richtige Weg, wenn es nicht wirklich ist. – kimbaudi