Dette kan komme lidt sent til dig, men jeg lader det stå, hvis andre løber ind i det samme problem. Så det lykkedes mig endelig at få Identity 2.0 og Oracle til at fungere sammen. De følgende trin fungerer, hvis du ikke ønsker at foretage ændringer i standardidentitetsbrugeren (f.eks. hvis du er okay med at have et char-id i stedet for int eller long) og bare vil have tabellerne på dit eksisterende Oracle-skema.
-
Opret identitetstabeller på Oracle. Du kan ændre tabelnavnene, hvis du vil, bare sørg for at inkludere de nødvendige kolonner for, at Identity kan arbejde med det. Du kan også tilføje eventuelle ekstra kolonner, du måtte have brug for i din applikation (scriptet blev oprindeligt fundet på Devart , jeg kopierede det til en essens, hvis URL'en går i stykker):
Gist her
-
Hvis du bruger en EDMX-fil, skal du tilføje en ny forbindelsesstreng, fordi den, der genereres automatisk, ikke virker, du skal bruge en standardforbindelsesstreng. Prøv at følge denne skabelon:
<add name="IdentityContext" connectionString="Data Source=localhost:1521/xe;PASSWORD=password;USER ID=username;" providerName="Oracle.ManagedDataAccess.Client" />
-
Fortæl din ApplicationDbContext at bruge din nye forbindelsesstreng
public ApplicationDbContext() : base("IdentityContext", throwIfV1Schema: false) { }
-
Bed Identity om at bruge dit eksisterende skema og tabeller. Tilføj denne metode i ApplicationDbContext-definitionen, der findes 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"); }
-
Genopbyg og det er det!
Fortæl mig, om det virker for dig!