2014-07-04 13 views
6

Il valore predefinito memorizza UserId in un NVARCHAR(128). Qualcuno può spiegare perché non lo memorizza in un NVARCHAR? Da quello che vedo il GUID non è altro che numeri, lettere e trattini. Ha bisogno di un NVARCHAR da memorizzare correttamente?Perché ASP.Net Identity 2 memorizza in UserId in un NVARCHAR?

+0

Credo che MS l'abbia indirizzato pubblicamente ma non ho il collegamento – IrishChieftain

+0

Non uso varchar (15) per un numero di telefono. Io uso nvarchar (15). In effetti ho iniziato a memorizzare tutti i valori dei tipi di stringa come NVARCHAR. Lascia che la tecnologia funzioni per te. Perché utilizzare VARCHAR (10) QUANDO è possibile utilizzare NVARCHAR (10), quest'ultimo eliminerà i paddings che hanno afflitto il tipo di dati VARCHAR. E nei peggiori varchar può causare incoerenze quando si interrogano i valori importati da set di dati eterogenei. –

+0

Puoi spiegare di più sulle differenze tra NVARCHAR e VARCHAR? Avevo l'impressione che N significasse che poteva contenere diversi set di caratteri. –

risposta

1

L'utilizzo del tipo di dati è un dettaglio di implementazione dell'implementazione di Entity Framework. Altri connettori (come quello per MongoDB) usano altri tipi di dati. È possibile scrivere la propria implementazione per questo, ma dalla versione 2 di Identity è possibile utilizzare altri tipi per i propri ID (non è necessario utilizzare VARCHAR o stringhe). Per ottenere questo lavoro è necessario implementare alcune classi aggiuntive che derivano da alcune classi di framework.

Per un esempio di implementazione dare un'occhiata alla risposta di James in this thread. Con questo snippet di codice devi semplicemente cambiare il tipo generico da int a Guid per ottenere Guidi come tipo di dati per gli ID.

Problemi correlati