sql >> Databáze >  >> RDS >> Oracle

ASP.NET MVC5 – udržení uživatelů v databázi Oracle

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.

  1. 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

  2. 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" />

  3. Řekněte svému ApplicationDbContext, aby použil váš nový connectionString

    public ApplicationDbContext()
        : base("IdentityContext", throwIfV1Schema: false)
    {
    }
    
  4. Ř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");
    }
    
  5. Přestavte a je to!

Dejte mi vědět, jestli to pro vás funguje!



  1. Replikujte jednu tabulku

  2. Vložit tam, kde neexistuje – bez primárního klíče

  3. Získejte poslední vložené ID řádku (s příkazem SQL)

  4. Chyba Postgres SSL SYSCALL:EOF detekován pomocí pythonu a psycopg