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.
-
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
-
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" />
-
Vertel uw ApplicationDbContext om uw nieuwe connectionString te gebruiken
public ApplicationDbContext() : base("IdentityContext", throwIfV1Schema: false) { }
-
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"); }
-
Herbouwen en dat is het!
Laat me weten of het voor jou werkt!