una tabla net mvc mostrar insertar framework espaƱol ejemplos desde datos consultas conexion con asp c# asp.net-mvc asp.net-identity asp.net-identity-2 asp.net-mvc-5

c# - mvc - Primera base de datos de la base de datos de la entidad de identidad Asp.net con su propia definiciĆ³n de tabla



mostrar datos de una tabla sql en c# (1)

Tengo debajo de cuatro tablas

Mesa de roles

Tabla de usuario

Tabla UserRole

Tabla UserType

identidad predeterminada de Asp.net con tablas inferiores como Asp.netusers, Asp.netRoles, Asp.netuserlogins, Asp.netuserclaims, Asp.netuserroles

Mi tabla no coincide con el mismo nombre de columna y algunas columnas no disponibles en mis tablas. ¿Puedo usar mis propias tablas para utilizar la característica de la identidad de asp.net? De lo contrario, tendré que seguir las mismas columnas que usé en la tabla Asp.netusers en mi tabla de usuarios.

¿Es eso todas las columnas necesarias para agregar en mi tabla?

Ya he implementado asp.net identity EF database first approach con las mismas tablas predeterminadas. Tengo una tienda de roles y una tienda de usuarios separadas

contexto debajo de aquí los usuarios, userroles son las mismas tablas predeterminadas que en asp.net identity (asp.netusers, asp.netroles)

public partial class OVT_UserEntities : DbContext { public OVT_UserEntities() : base("name=OVT_UserEntities") { } protected override void OnModelCreating(DbModelBuilder modelBuilder) { throw new UnintentionalCodeFirstException(); } public virtual DbSet<UserClaim> UserClaims { get; set; } public virtual DbSet<UserLogin> UserLogins { get; set; } public virtual DbSet<UserRole> UserRoles { get; set; } public virtual DbSet<User> Users { get; set; } }

Clase de usuario:

public partial class User : IUser<int> { }

Clase de rol:

public partial class UserRole : IRole<int> { }

Ahora quiero usar las cuatro tablas nuevas (imágenes de diseño de tabla anteriores) en lugar de las tablas existentes proporcionadas por la identidad asp.net. Entonces, no estoy seguro de si todas las tablas y columnas deben agregarse en mi base de datos para trabajar en la identidad de asp.net.


Como está utilizando Microsoft.AspNet.Identity , debe heredar su usuario de IdentityUser (namespace Microsoft.AspNet.Identity.EntityFramework ).

Tus clases deberían definirse así:

USUARIO

public class User : IdentityUser<int, UserLogin, UserRole, UserClaim> { }

PAPEL

public class Role : IdentityRole<int, UserRole> { }

ROL DEL USUARIO

public class UserRole : IdentityUserRole<int> { }

RECLAMACIÓN DE USUARIO

public class UserClaim : IdentityUserClaim<int> { }

INICIO DE SESIÓN DE USUARIO

public class UserLogin : IdentityUserLogin<int> { }

Puede extender las clases agregando sus propias columnas personalizadas:

public class User : IdentityUser<int, UserLogin, UserRole, UserClaim> { public string CompanyName { get; set; } }

Ahora debes definir las tiendas:

public class UserStore: UserStore<User, Role, int, UserLogin, UserRole, UserClaim> { public UserStore(MyContext context) : base(context) { } }

y luego su contexto de base de datos, heredando de IdentityDbContext :

public class MyContext : IdentityDbContext<User, Role, int, UserLogin, UserRole, UserClaim> { public MyContext(): base("ConnectionString") { } }

En el contexto de su base de datos ( MyContext ), debe anular OnModelCreating para que pueda crear sus columnas, tipos de cambio, nombres de tablas, etc., etc.

protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<MyUser>() .Property(p => p.Id) .HasColumnType("int") .IsRequired(); modelBuilder.Entity<MyRole>() .Property(p => p.Id) .HasColumnType("int") .IsRequired(); modelBuilder.Entity<MyUserRole>() .Property(p => p.RoleId) .HasColumnType("int") .IsRequired(); modelBuilder.Entity<MyUserRole>() .Property(p => p.UserId) .HasColumnType("int") .IsRequired(); modelBuilder.Entity<MyUserClaim>() .Property(p => p.Id) .HasColumnType("int") .IsRequired(); modelBuilder.Entity<MyUserClaim>() .Property(p => p.UserId) .HasColumnType("int") .IsRequired(); modelBuilder.Entity<MyUserLogin>() .Property(p => p.UserId) .HasColumnType("int") .IsRequired(); modelBuilder.Entity<MyUser>() .ToTable("Users"); modelBuilder.Entity<MyRole>() .ToTable("Roles"); modelBuilder.Entity<MyUserRole>() .ToTable("UserRoles"); modelBuilder.Entity<MyUserClaim>() .ToTable("UserClaims"); modelBuilder.Entity<MyUserLogin>() .ToTable("UserLogins"); }

Ahora puede usar migraciones para generar sus tablas.

He actualizado un proyecto github para reflejar tu situación.

ACTUALIZAR :

Si desea personalizar los nombres y tipos de sus columnas, simplemente debe darles un nombre:

modelBuilder.Entity<User>() .Property(p => p.Id) .HasColumnName("user_id") .HasColumnType("SMALLINT") .IsRequired();