MVC5 ASP.NET Identity with Oracle DB

1k Views Asked by At

Please, anyone knows any example to use MVC5 ASP.NET Identity with Oracle DB 11g?

I changed all the web.config with next configuration:

<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />

<add name="OracleDbContext" providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=USERADM;Password=PASSWORD;Data Source=oracle" />

<assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />

<defaultConnectionFactory type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess" />
<providers>
  <provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</providers>

<DbProviderFactories>
  <remove invariant="Oracle.ManagedDataAccess.Client" />
  <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>

<dataSource alias="oracle" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=HOST)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=BD))) " />

and changed the IdentityModel file like this:

using Microsoft.AspNet.Identity.EntityFramework;
using System.Data.Entity;

namespace OracleTest1.Models
{
// You can add profile data for the user by adding more properties to your ApplicationUser class, please visit http://go.microsoft.com/fwlink/?LinkID=317594 to learn more.
public class ApplicationUser : IdentityUser
{
}

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("OracleDbContext")
    {

    }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.HasDefaultSchema("USERADM");
    }
}
}

When try to test a login I get the next error:

Error de servidor en la aplicación '/'.

Se han detectado uno o varios errores de validación durante la generación del modelo:

OracleTest1.Models.IdentityUserLogin: : EntityType 'IdentityUserLogin' no tiene ninguna clave definida. Defina la clave para este EntityType.
OracleTest1.Models.IdentityUserRole: : EntityType 'IdentityUserRole' no tiene ninguna clave definida. Defina la clave para este EntityType.
IdentityUserLogins: EntityType: EntitySet 'IdentityUserLogins' se basa en el tipo 'IdentityUserLogin' que no tiene claves definidas.
IdentityUserRoles: EntityType: EntitySet 'IdentityUserRoles' se basa en el tipo 'IdentityUserRole' que no tiene claves definidas.

Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código. 

Detalles de la excepción: System.Data.Entity.ModelConfiguration.ModelValidationException: Se han detectado uno o varios errores de validación durante la generación del modelo:

OracleTest1.Models.IdentityUserLogin: : EntityType 'IdentityUserLogin' no tiene ninguna clave definida. Defina la clave para este EntityType.
OracleTest1.Models.IdentityUserRole: : EntityType 'IdentityUserRole' no tiene ninguna clave definida. Defina la clave para este EntityType.
IdentityUserLogins: EntityType: EntitySet 'IdentityUserLogins' se basa en el tipo 'IdentityUserLogin' que no tiene claves definidas.
IdentityUserRoles: EntityType: EntitySet 'IdentityUserRoles' se basa en el tipo 'IdentityUserRole' que no tiene claves definidas.

Thx a lot

1

There are 1 best solutions below

0
On

There is a bug in current Oracle provider for Entity Framework 6. Workaround is to enable migrations and generate migration script. After applying script manually and creating tables you will be able to use ASP.NET Identity on Oracle database.

Get script like this:

Update-Database -Script