Я пытаюсь сделать авторизацию на основе токенов в своей службе веб-API, планируя хранить таблицы идентификации в моей базе данных Oracle.Соединение базы данных Oracle для Entity Framework
Я знаю, что есть два способа доступа к базе данных - через Oracle ManagedDataAccess или Oracle DataAccess. Я скачал управляемую версию для Entity Framework 6.
Вот часть моего web config
:
(я изменил полномочия и струнный путь, просто предположим, что они правильны, и я могу подключиться без лица Framework - но только с неуправляемым DataAccess)
<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>
и это часть dbContext
- OnModelCreating
метод должен заставить идентичность использовать мои selfprepared таблицы (или я надеюсь, что это будет, нет возможности проверить их) :
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();
}
}
Итак ... когда я использую строку соединения с ManagedDataAccess:
<add name="Test"
providerName="Oracle.ManagedDataAccess.Client"
connectionString="User Id=login;Password=pass;Data Source=Test" />
Я получаю сообщение об ошибке:
ORA-12154: TNS: не удалось разрешить указан идентификатор подключения
Когда я обращаюсь к неуправляемой версии следующим образом:
<add name="Test"
providerName="Oracle.DataAccess.Client"
connectionString="User Id=login;Password=pass;Data Source=Test" />
Я получаю сообщение об ошибке, что Entity Framework не может найти любой dbContext
имени Oracle.DataAccess.Client
.
В моих других проектах я использую Oracle.ManagedDataAccess.Client
, но набрав в моей строке строку Oracle.DataAccess.Client
- и все работает отлично!
Простой вопрос - как подключиться к Oracle с EF6? Через управляемый и неуправляемый доступ к данным? (потому что для неуправляемого каркаса нет нумерации )