Może się to okazać nieco spóźnione, ale zostawię to na wypadek, gdyby ktoś inny napotkał ten sam problem. Udało mi się w końcu sprawić, by Identity 2.0 i Oracle współpracowały ze sobą. Poniższe kroki działają, jeśli nie chcesz wprowadzać żadnych zmian w domyślnym IdentityUser (np. jeśli nie masz nic przeciwko posiadaniu identyfikatora char zamiast int lub long) i chcesz po prostu tabele w istniejącym schemacie Oracle.
-
Twórz tabele tożsamości w Oracle. Jeśli chcesz, możesz zmienić nazwy tabel, po prostu upewnij się, że zawiera niezbędne kolumny, aby Identity z nimi współpracowało. Możesz również dodać dowolne dodatkowe kolumny, których możesz potrzebować w swojej aplikacji (skrypt pierwotnie znaleziony na Devart , skopiowałem go do Gist na wypadek awarii adresu URL):
Napisz tutaj
-
Jeśli używasz pliku EDMX, musisz dodać nowy ciąg połączenia, ponieważ ten, który zostanie wygenerowany automatycznie, nie będzie działał, potrzebujesz standardowego ciągu połączenia. Spróbuj skorzystać z tego szablonu:
<add name="IdentityContext" connectionString="Data Source=localhost:1521/xe;PASSWORD=password;USER ID=username;" providerName="Oracle.ManagedDataAccess.Client" />
-
Poinformuj ApplicationDbContext, aby użył nowego ciągu połączenia
public ApplicationDbContext() : base("IdentityContext", throwIfV1Schema: false) { }
-
Powiedz Identity, aby używała istniejącego schematu i tabel. Dodaj tę metodę w definicji ApplicationDbContext znajdującej się w 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"); }
-
Przebuduj i gotowe!
Daj mi znać, czy to działa dla Ciebie!