Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ASP.NET MVC5 – Halten von Benutzern in der Oracle-Datenbank

Dies kommt vielleicht etwas spät für Sie an, aber ich lasse es, falls jemand anderes auf das gleiche Problem stößt. So habe ich es endlich geschafft, Identity 2.0 und Oracle zum Arbeiten zu bringen. Die folgenden Schritte funktionieren, wenn Sie keine Änderungen am standardmäßigen IdentityUser vornehmen möchten (z. B. wenn Sie mit einer Char-ID anstelle von int oder long einverstanden sind) und nur die Tabellen in Ihrem vorhandenen Oracle-Schema haben möchten.

  1. Erstellen Sie Identitätstabellen auf Oracle. Sie können die Tabellennamen ändern, wenn Sie möchten, stellen Sie jedoch sicher, dass Sie die erforderlichen Spalten einbeziehen, damit Identity damit arbeiten kann. Sie können Ihrer Anwendung auch zusätzliche Spalten hinzufügen, die Sie möglicherweise benötigen (Skript, das ursprünglich auf Devart , ich habe es in einen Kern kopiert, falls die URL kaputt geht):

    Gist hier

  2. Wenn Sie eine EDMX-Datei verwenden, müssen Sie eine neue Verbindungszeichenfolge hinzufügen, da die automatisch generierte Zeichenfolge nicht funktioniert. Sie benötigen eine Standard-Verbindungszeichenfolge. Versuchen Sie es mit dieser Vorlage:

    <add name="IdentityContext" connectionString="Data Source=localhost:1521/xe;PASSWORD=password;USER ID=username;" providerName="Oracle.ManagedDataAccess.Client" />

  3. Sagen Sie Ihrem ApplicationDbContext, dass er Ihre neue Verbindungszeichenfolge verwenden soll

    public ApplicationDbContext()
        : base("IdentityContext", throwIfV1Schema: false)
    {
    }
    
  4. Weisen Sie Identity an, Ihr vorhandenes Schema und Ihre vorhandenen Tabellen zu verwenden. Fügen Sie diese Methode innerhalb der ApplicationDbContext-Definition in IdentityModels.cs hinzu:

    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. Neu erstellen und fertig!

Lassen Sie mich wissen, ob es für Sie funktioniert!