0

Ich benutze ASP.NET Identity 2.0 in meinem MVC5-Projekt und wollte den Datentyp des ID-Felds von AspNetUsers von String (GUID) zu int ändern, deshalb habe ich einige Tabellen in Bezug auf AspNetUsers Tabelle. Ich sehe viele Seiten wie auf How to change type of id in Microsoft.AspNet.Identity.EntityFramework.IdentityUser, aber es scheint nicht einfach zu bewerben. Andererseits sehe ich, dass das Ändern des Datentyps des ID-Feldes der AspNetUsers-Entität nicht genug ist, da es einige pk/fk-Beziehungen zwischen den anderen Identitätstypen gibt, dh AspNetUserRoles, ApplicationGroupRoles, etc .. In diesem Fall sollte ich verwenden der ursprüngliche Datentyp für Identitätstabellen und ändern Sie den ID-Typ für meine Tabellen von int in Zeichenfolge? Oder wie kann ich den Datentyp aller Identitätstabellen in ASP.NET Identity 2.0 einfach ändern? Wenn das in Version 3.0 einfacher ist, kann ich es auch verwenden.Mögliche Probleme nach Änderung des ID-Typs von String (GUID) zu int?

+0

int Warum Sie mit lassen Sie sich nicht Benutzer String-ID und alle anderen Tabellen mit Int Id? –

+0

@LucianBumb Ich bin mir nicht sicher, ob es eine gute Idee für die PK/FK-Beziehung ist. Also, ich denke, die beste Idee ist, int für benutzerdefinierte Tabellen zu verwenden und den ID-Typ von String in int für ASP.net-Identitätstabellen zu konvertieren. Irgendein Vorschlag? –

+0

Kumpel, ich kämpfe viel, um das zu tun, was du jetzt versuchst, weil ich sicher war, dass ich in einigen Entitäten keine 'string'-ID und in anderen Entitäten' int 'haben kann, bis ich mich entscheide, einen Test zu machen und zu sehen, was sei das Problem. Das Ergebnis war kein Problem! Sie müssen nur darauf achten, dass 'userId'' string' ist. –

Antwort

0

Ich möchte meinen Kommentar erweitern, weil ich vor ein paar Monaten versucht habe, dasselbe zu tun.

In meinem Fall war ich nicht sicher, ob ich die Beziehungen schaffen kann string ->int, aus der Datenbank zuerst comming, und verwendet die Beziehungen zwischen productId (int) und userId (int) zu schaffen, wollte ich int ids alle haben Über.

Mate können Sie userId wie string lassen und Beziehungen wie diese erstellen;

public class Customer 
{ 
    public int Id {get;set;} 
    public string Name {get;set;} 

    public string SalesManId {get;set;} 
    [ForeignKey("SalesManId ")] 
    public virtual ApplicationUser SalesMan {get;set;} 
} 

Hier ist die Customer Entity, und ich habe eine Navigationseigenschaft erklärt! So ist die SalesManId vom Typ string. Auf diese Weise können Sie alle Ihre Beziehungen mit ApplicationUser Klasse erstellen.

Wenn Sie noch int ändern möchten, hier ist ein Tutorial youtube, das ich vor einigen Monaten gefolgt und ich manged von Saite zu ändern

YouTube tutorial-How to change UserId from string to int

+0

Vielen Dank für Ihre Antwort. Tatsächlich hatte ich viele Probleme bei der Erstellung von pk/fk-Beziehungen, und ich denke, es wäre besser, wenn ich das Problem lösen würde, indem ich den Datentyp der Identitätstabellen von string nach int ändere. >>> –

+0

Also, ich schaue auf den ursprünglichen Beitrag auf http://www.asp.net/identity/overview/extensibility/change-primary-key-for-users-in-aspnet-identity, aber nicht sicher, ob ich habe um die benutzerdefinierten Klassen zu IdentityModels hinzuzufügen, die im Schritt "Benutzerdefinierte Identitätsklassen mit dem Schlüsseltyp hinzufügen" erläutert werden. Weil ich das Projekt jetzt erstelle und momentan keine Tabelle erstellt wird. Ich meine, dass ich die aktuellen Klassen ändern kann, anstatt die benutzerdefinierten hinzuzufügen? –

+0

@binary Ich füge in die Antwort einen Link zum Tutorial ein, der Schritt für Schritt erklärt, wie es geht. –