Sto osservando le interfacce sulle nuove classi di identità ASP.NET e il database creato utilizzando Entity Framework Code First. Sto usando il Visual Studio 2013 RC.Perché le interfacce di identità ASP.NET utilizzano stringhe per chiavi primarie e esterne?
A prima vista lo schema del database appare ragionevolmente normale:
Ma tutti i tasti sono NVARCHAR (128)
E per qualche ragione folle AspNetUserSecrets.Id
è un PK che assomiglia potrebbe indicare più di un record nella tabella AspNetUsers
. Significa che più AspNetUsers
dovrà condividere la stessa password?
Quando guardo la Guardando le interfacce si è costretti a implementare, queste sono tutte le stringhe ...
public class User : IUser
{
public string Id { get; set; }
public string UserName { get; set; }
}
public class UserSecret : IUserSecret
{
public string UserName { get; set; }
public string Secret { get; set; }
}
public class UserRole : IUserRole
{
public string UserId { get; set; }
public string RoleId { get; set; }
}
public class UserClaim : IUserClaim
{
public string UserId { get; set; }
public string ClaimType { get; set; }
public string ClaimValue { get; set; }
}
public class UserManagement : IUserManagement
{
public string UserId { get; set; }
public bool DisableSignIn { get; set; }
public DateTime LastSignInTimeUtc { get; set; }
}
public class Tokens : IToken
{
public string Id { get; set; }
public string Value { get; set; }
public DateTime ValidUntilUtc { get; set; }
}
public class UserLogin : IUserLogin
{
public string UserId { get; set; }
public string LoginProvider { get; set; }
public string ProviderKey { get; set; }
}
public class Role : IRole
{
public string Id { get; set; }
public string Name { get; set; }
}
Così sto venendo a patti con il fatto che io possa avere per implementare questo usando le stringhe per le relazioni PK e FK.
Ma mi piacerebbe davvero sapere PERCHE 'è costruito in questo modo ...?
EDIT: Il tempo è passato e ora ci sono articoli su come estendere l'identità asp.net da usare int (o GUID) campi:
http://www.asp.net/identity/overview/extensibility/change-primary-key-for-users-in-aspnet-identity
Si sta utilizzando una versione beta. La versione finale è diversa dalla mia comprensione. Ho sentito che hanno rimosso completamente la tabella AspNetUserSecrets. –
Beh, questo risolverà uno dei problemi :) Ma continuo a non capire perché tutte le chiavi siano NVARCHER (128) ... –