Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

ASP.NET MVC5 - Mantendo usuários no banco de dados Oracle


Isso pode chegar um pouco tarde para você, mas vou deixá-lo caso alguém mais tenha o mesmo problema. Então, finalmente consegui fazer o Identity 2.0 e o Oracle funcionarem juntos. As etapas a seguir funcionam se você não quiser fazer nenhuma alteração no IdentityUser padrão (por exemplo, se você concordar em ter um char ID em vez de int ou long) e quiser apenas as tabelas em seu esquema Oracle existente.

  1. Crie tabelas de identidade no Oracle. Você pode alterar os nomes das tabelas se quiser, apenas certifique-se de incluir as colunas necessárias para que o Identity funcione com ela. Você também pode adicionar quaisquer colunas extras que possa precisar em seu aplicativo (script originalmente encontrado em Devart , copiei para um gist no caso de quebra de URL):

    Resumo aqui

  2. Se você estiver usando um arquivo EDMX, precisará adicionar uma nova string de conexão porque a que é gerada automaticamente não funcionará, você precisa de uma string de conexão padrão. Tente seguir este modelo:

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

  3. Diga ao seu ApplicationDbContext para usar sua nova connectionString
    public ApplicationDbContext()
        : base("IdentityContext", throwIfV1Schema: false)
    {
    }
    

  4. Diga ao Identity para usar seu esquema e tabelas existentes. Adicione este método dentro da definição ApplicationDbContext encontrada em 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. Reconstrua e pronto!

Deixe-me saber se funciona para você!