使用Oracle DB的MVC5 ASP.NET标识

时间:2015-06-09 21:49:49

标签: c# asp.net asp.net-mvc oracle asp.net-mvc-5

请问,任何人都知道将任何MVC5 ASP.NET身份与Oracle DB 11g一起使用的示例吗?

我使用下一个配置更改了所有web.config:

<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))) " />

并更改了IdentityModel文件,如下所示:

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");
    }
}
}

当尝试测试登录时,我收到下一个错误:

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.

很多

1 个答案:

答案 0 :(得分:0)

当前针对Entity Framework 6的Oracle提供程序中存在一个错误。解决方法是启用迁移并生成迁移脚本。手动应用脚本并创建表后,您将能够在Oracle数据库上使用ASP.NET标识。

获取这样的脚本:

Update-Database -Script