2014-07-04 4 views
6

Der Standardwert speichert die UserId in einer NVARCHAR(128). Kann jemand erklären, warum es nicht in einem NVARCHAR gespeichert wird? Von dem, was ich sehe, ist die GUID nichts mehr als Zahlen, Buchstaben und Bindestriche. Muss eine NVARCHAR richtig gespeichert werden?Warum speichert ASP.Net Identity 2 in UserId in einem NVARCHAR?

+0

Ich glaube, MS hat dies öffentlich angesprochen, aber ich habe nicht den Link – IrishChieftain

+0

Ich benutze nicht varchar (15) für eine Telefonnummer. Ich benutze nvarchar (15). Tatsächlich habe ich angefangen, alle String-Typ-Werte als NVARCHAR zu speichern. Lassen Sie Technologie für Sie arbeiten. Warum verwenden Sie VARCHAR (10) WENN Sie NVARCHAR (10) verwenden können, löscht letzteres Paddings, die den VARCHAR-Datentyp geplagt haben. Und schlimmstenfalls können Varchare Inkonsistenzen bei der Abfrage von Werten verursachen, die aus heterogenen Datensätzen importiert werden. –

+0

Können Sie mehr über die Unterschiede zwischen NVARCHAR und VARCHAR erklären? Ich hatte den Eindruck, dass das N bedeutet, dass es verschiedene Zeichensätze enthalten kann. –

Antwort

1

Die Datentypverwendung ist ein Implementierungsdetail der Entity Framework-Implementierung. Andere Connectors (wie der für MongoDB) verwenden andere Datentypen. Sie könnten dafür eine eigene Implementierung schreiben, aber seit Version 2 von Identity können Sie andere Typen für Ihre IDs verwenden (Sie müssen VARCHARs oder Strings nicht verwenden). Um diese Arbeit zu erhalten, müssen Sie einige zusätzliche Klassen implementieren, die von einigen Framework-Klassen abgeleitet sind. Für ein Implementierungsbeispiel schauen Sie sich die Antwort von James in this thread an. Mit diesem Code-Snippet müssen Sie lediglich den generischen Typ von int in Guid ändern, um Guids als Datentyp für die IDs zu erhalten.