sql >> Database >  >> RDS >> Oracle

ASP.NET MVC5 - Gebruikers in Oracle Database houden

Dit kan een beetje laat voor je aankomen, maar ik laat het staan ​​voor het geval iemand anders tegen hetzelfde probleem aanloopt. Dus het is me eindelijk gelukt om Identity 2.0 en Oracle samen te laten werken. De volgende stappen werken als u geen wijzigingen wilt aanbrengen in de standaard IdentityUser (bijvoorbeeld als u een char-ID in plaats van int of long goed vindt) en u alleen de tabellen op uw bestaande Oracle-schema wilt hebben.

  1. Maak identiteitstabellen op Oracle. U kunt de tabelnamen desgewenst wijzigen, maar zorg ervoor dat u de benodigde kolommen opneemt zodat Identity ermee kan werken. U kunt ook extra kolommen toevoegen aan uw toepassing (script oorspronkelijk gevonden op Devart , ik heb het gekopieerd naar een kern voor het geval de URL breekt):

    Gist hier

  2. Als u een EDMX-bestand gebruikt, moet u een nieuwe verbindingsreeks toevoegen omdat degene die automatisch wordt gegenereerd niet werkt, u hebt een standaard verbindingsreeks nodig. Probeer deze sjabloon te volgen:

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

  3. Vertel uw ApplicationDbContext om uw nieuwe connectionString te gebruiken

    public ApplicationDbContext()
        : base("IdentityContext", throwIfV1Schema: false)
    {
    }
    
  4. Vertel Identity om uw bestaande schema en tabellen te gebruiken. Voeg deze methode toe aan de ApplicationDbContext-definitie in 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. Herbouwen en dat is het!

Laat me weten of het voor jou werkt!



  1. UPDATE een hele rij in PL/pgSQL

  2. COALESCE twee datums retourneert binair?

  3. Mysql-query die de categorieboom retourneert

  4. Primaire sleutel sorteren