net mvc inherits filtro busqueda asp c# asp.net database-design uniqueidentifier asp.net-identity-2

c# - inherits - filtro de busqueda mvc



¿Por qué el ID de usuario de identidad de asp.net es una cadena? (2)

Dependiendo de la versión de autenticación ASP.Net que esté utilizando, en la base de datos ASP.NET Identity v2 debe ser almacenada como identificador único (Guid) en la tabla AspNetUsers . En más versiones anteriores, almacenará el ID de usuario como int en la tabla webpages_Membership .

Creo que lo ve como una cuerda, por lo que puede ser cualquier tipo de datos que desee debajo del capó y esto se puede convertir dentro de su código según sea necesario.

Deseo utilizar System.Guid type como id para todas mis tablas en la aplicación asp.net web api. Pero también uso Asp.net Identity, que usa una id de tipo de cadena (para almacenar guids también). Entonces me pregunto por qué está usando ID de cadena en lugar de System.Guid por defecto? ¿Y cuál es la mejor opción para usar a través de toda la aplicación, ID de guía o cadena, ID de guía? En caso de utilizar una cadena, ¿cuál es la forma más adecuada y confiable de generar una nueva identificación en el código o en la base de datos?


Con ASP.NET Core, tiene una forma muy simple de especificar el tipo de datos que desea para los modelos de Identity.

Primer paso, anule las clases de identidad de <cadena> a <tipo de datos que desea> :

public class ApplicationUser : IdentityUser<Guid> { } public class ApplicationRole : IdentityRole<Guid> { }

Declare el contexto de su base de datos, usando sus clases y el tipo de datos que desea:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, Guid> { public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { } protected override void OnModelCreating(ModelBuilder builder) { base.OnModelCreating(builder); // Customize the ASP.NET Identity model and override the defaults if needed. // For example, you can rename the ASP.NET Identity table names and more. // Add your customizations after calling base.OnModelCreating(builder); } }

Y en su clase de inicio, declare el servicio de identidad utilizando sus modelos y declare el tipo de datos que desea para las claves principales:

services.AddIdentity<ApplicationUser, ApplicationRole>() .AddEntityFrameworkStores<ApplicationDbContext, Guid>() .AddDefaultTokenProviders();