Oracle
 sql >> Base de données >  >> RDS >> Oracle

ASP.NET MVC5 - Garder les utilisateurs dans la base de données Oracle

Cela peut arriver un peu tard pour vous, mais je le laisserai au cas où quelqu'un d'autre rencontrerait le même problème. J'ai donc finalement réussi à faire fonctionner Identity 2.0 et Oracle. Les étapes suivantes fonctionnent si vous ne souhaitez apporter aucune modification à l'IdentityUser par défaut (par exemple, si vous êtes d'accord avec un char ID au lieu de int ou long) et que vous voulez simplement les tables sur votre schéma Oracle existant.

  1. Créer des tables d'identité sur Oracle. Vous pouvez modifier les noms de table si vous le souhaitez, assurez-vous simplement d'inclure les colonnes nécessaires pour que Identity fonctionne avec. Vous pouvez également ajouter des colonnes supplémentaires dont vous pourriez avoir besoin sur votre application (script trouvé à l'origine sur Devart , je l'ai copié dans un gist en cas de rupture d'URL) :

    Gist ici

  2. Si vous utilisez un fichier EDMX, vous devez ajouter une nouvelle chaîne de connexion car celle qui est générée automatiquement ne fonctionnera pas, vous avez besoin d'une chaîne de connexion standard. Essayez de suivre ce modèle :

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

  3. Dites à votre ApplicationDbContext d'utiliser votre nouvelle connectionString

    public ApplicationDbContext()
        : base("IdentityContext", throwIfV1Schema: false)
    {
    }
    
  4. Indiquez à Identity d'utiliser votre schéma et vos tables existants. Ajoutez cette méthode dans la définition ApplicationDbContext trouvée dans 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. Reconstruisez et c'est tout !

Faites-moi savoir si cela fonctionne pour vous !