Ich versuche, eine Token-basierte Autorisierung in meinem Web-API-Dienst zu machen, in der Planung, Identitätstabellen in meiner Oracle-Datenbank zu speichern.Oracle-Datenbankverbindung für Entity Framework
Ich weiß, dass es zwei Möglichkeiten gibt, auf die Datenbank zuzugreifen - über Oracle ManagedDataAccess oder Oracle DataAccess. Ich habe für Entity Framework verwaltete Version heruntergeladen 6.
Hier ist der Teil meiner web config
ist:
(i Anmeldeinformationen und String-Pfad geändert haben, nur davon ausgehen, dass sie korrekt sind und ich kann ohne Entity verbinden Rahmen - aber nur mit nicht verwalteten Data Access)
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<dataSource alias="Test" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)))" />
</dataSources>
</version>
</oracle.manageddataaccess.client>
<connectionStrings>
<add name="Test"
providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=login;Password=pass;Data Source=Test" />
<clear />
<add name="OraAspNetConString" connectionString=" " />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v13.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="Oracle.ManagedDataAccess.Client"
type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</providers>
</entityFramework>
und das ist der Teil dbContext
- OnModelCreating
Methode sollte Identität zwingen, meine selfprepared Tabellen zu verwenden (oder ich hoffe, es würde, haben keine Chance, sie zu testen) :
public class AuthContext : IdentityDbContext<IdentityUser>
{
public AuthContext() : base("Test")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder); // MUST go first.
modelBuilder.HasDefaultSchema("MY_SCHEME"); // Use uppercase!
modelBuilder.Entity<IdentityUser>().ToTable("AspNetUsers");
modelBuilder.Entity<IdentityRole>().ToTable("AspNetRoles");
modelBuilder.Entity<IdentityUserRole>().ToTable("AspNetUserRoles");
modelBuilder.Entity<IdentityUserClaim>().ToTable("AspNetUserClaims");
modelBuilder.Entity<IdentityUserLogin>().ToTable("AspNetUserLogins");
}
public static AuthContext Create()
{
return new AuthContext();
}
}
Also ... wenn ich Verbindungszeichenfolge bin mit mit ManagedDataAccess:
<add name="Test"
providerName="Oracle.ManagedDataAccess.Client"
connectionString="User Id=login;Password=pass;Data Source=Test" />
Ich erhalte die Fehlermeldung:
ORA-12154: TNS: konnte nicht auflösen die Verbindungskennung
Wenn ich mich an die unmanaged Version wende:
<add name="Test"
providerName="Oracle.DataAccess.Client"
connectionString="User Id=login;Password=pass;Data Source=Test" />
Ich erhalte einen Fehler, der Entity Framework nicht dbContext
Oracle.DataAccess.Client
genannt finden.
In meinen anderen Projekten verwende ich Oracle.ManagedDataAccess.Client
, aber Eingabe Oracle.DataAccess.Client
in meiner Verbindungszeichenfolge - und es funktioniert gut!
Die einfache Frage - wie verbinde ich mich mit Oracle mit EF6? Über verwalteten und nicht verwalteten Datenzugriff? (da es kein nugget für das nicht verwaltete Framework Version gibt)