sql >> Base de Datos >  >> RDS >> Oracle

ASP.NET MVC5:mantener a los usuarios en la base de datos de Oracle

Esto puede llegar un poco tarde para usted, pero lo dejaré en caso de que alguien más tenga el mismo problema. Así que finalmente logré hacer que Identity 2.0 y Oracle funcionen juntos. Los siguientes pasos funcionan si no desea realizar ningún cambio en el IdentityUser predeterminado (por ejemplo, si está de acuerdo con tener un ID de carácter en lugar de int o long) y solo desea las tablas en su esquema de Oracle existente.

  1. Cree tablas de identidad en Oracle. Puede cambiar los nombres de las tablas si lo desea, solo asegúrese de incluir las columnas necesarias para que Identity funcione con ellas. También puede agregar cualquier columna adicional que pueda necesitar en su aplicación (script originalmente encontrado en Devart , lo copié en esencia en caso de que la URL se rompa):

    Gist aquí

  2. Si está utilizando un archivo EDMX, debe agregar una nueva cadena de conexión porque la que se genera automáticamente no funcionará, necesita una cadena de conexión estándar. Intenta seguir esta plantilla:

    <add name="IdentityContext" connectionString="Data Source=localhost:1521/xe;PASSWORD=password;USER ID=username;" providerName="Oracle.ManagedDataAccess.Client" />

  3. Dígale a su ApplicationDbContext que use su nueva cadena de conexión

    public ApplicationDbContext()
        : base("IdentityContext", throwIfV1Schema: false)
    {
    }
    
  4. Dígale a Identity que use su esquema y tablas existentes. Agregue este método dentro de la definición de ApplicationDbContext que se encuentra en IdentityModels.cs:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder); // MUST go first.
    
        modelBuilder.HasDefaultSchema("YOUR_SCHEMA"); // Use uppercase!
    
        modelBuilder.Entity<ApplicationUser>().ToTable("AspNetUsers");
        modelBuilder.Entity<IdentityRole>().ToTable("AspNetRoles");
        modelBuilder.Entity<IdentityUserRole>().ToTable("AspNetUserRoles");
        modelBuilder.Entity<IdentityUserClaim>().ToTable("AspNetUserClaims");
        modelBuilder.Entity<IdentityUserLogin>().ToTable("AspNetUserLogins");
    }
    
  5. ¡Reconstruye y listo!

¡Avísame si te funciona!