sql >> Databasteknik >  >> RDS >> Oracle

ASP.NET MVC5 - Hålla användare i Oracle Database

Det här kan komma lite sent för dig men jag lämnar det ifall någon annan stöter på samma problem. Så jag lyckades äntligen få Identity 2.0 och Oracle att fungera tillsammans. Följande steg fungerar om du inte vill göra några ändringar i standardidentitetsanvändaren (t.ex. om du är okej med att ha ett char-ID istället för int eller long) och bara vill ha tabellerna på ditt befintliga Oracle-schema.

  1. Skapa identitetstabeller på Oracle. Du kan ändra tabellnamnen om du vill, se bara till att inkludera nödvändiga kolumner för att Identity ska fungera med den. Du kan också lägga till eventuella extra kolumner du kan behöva i din applikation (skriptet hittades ursprungligen på Devart , jag kopierade det till en kärna om URL-adressen går sönder):

    Sammanfattning här

  2. Om du använder en EDMX-fil måste du lägga till en ny anslutningssträng eftersom den som genereras automatiskt inte fungerar, du behöver en standardanslutningssträng. Försök att följa den här mallen:

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

  3. Be din ApplicationDbContext att använda din nya anslutningssträng

    public ApplicationDbContext()
        : base("IdentityContext", throwIfV1Schema: false)
    {
    }
    
  4. Be Identity att använda ditt befintliga schema och tabeller. Lägg till den här metoden i ApplicationDbContext-definitionen som finns i 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. Bygg om och det är det!

Låt mig veta om det fungerar för dig!



  1. Varför flyter MySQL round mycket mer än förväntat?

  2. MySQL Store Image BLOB Dålig praxis prestanda

  3. Entity framework databasleverantörs kompatibilitetsfel

  4. Sätt att ta reda på / hämta Windows-användarnamn i Oracle APEX