Možná vám to přijde trochu pozdě, ale nechám to pro případ, že by někdo narazil na stejný problém. Tak se mi konečně podařilo zprovoznit Identity 2.0 a Oracle. Následující kroky fungují, pokud nechcete provádět žádné změny ve výchozím IdentityUser (např. pokud vám vyhovuje mít char ID místo int nebo long) a chcete pouze tabulky ve vašem stávajícím schématu Oracle.
-
Vytvářejte identifikační tabulky na Oracle. Názvy tabulek můžete změnit, pokud chcete, jen nezapomeňte zahrnout potřebné sloupce, aby s nimi mohla Identita pracovat. Do aplikace můžete také přidat další sloupce, které můžete potřebovat (skript původně nalezený na Devart , zkopíroval jsem to do podstaty pro případ, že by se URL zlomila):
Shrnutí zde
-
Pokud používáte soubor EDMX, musíte přidat nový připojovací řetězec, protože ten, který se vygeneruje automaticky, nebude fungovat, potřebujete standardní připojovací řetězec. Zkuste postupovat podle této šablony:
<add name="IdentityContext" connectionString="Data Source=localhost:1521/xe;PASSWORD=password;USER ID=username;" providerName="Oracle.ManagedDataAccess.Client" />
-
Řekněte svému ApplicationDbContext, aby použil váš nový connectionString
public ApplicationDbContext() : base("IdentityContext", throwIfV1Schema: false) { }
-
Řekněte Identity, aby použila vaše stávající schéma a tabulky. Přidejte tuto metodu do definice ApplicationDbContext nalezené v 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"); }
-
Přestavte a je to!
Dejte mi vědět, jestli to pro vás funguje!