使用Identity Membership和MVC 5时出现ORA-01918错误

时间:2016-09-21 13:07:23

标签: asp.net-mvc oracle11g odp.net membership-provider

我正在尝试将MVC(版本5)身份成员资格提供程序与Oracle数据库(11 g)一起使用。我已经创建了一个数据库并安装了所有必要的表( ORA_ASPNET_APPLICATIONS,ORA_ASPNET_USERS等)。我还下载了 Visual Studio的Oracle Developer Tools ,并安装并引用了 Oracle.ManagedDataAccess Oracle.ManagedDataAccess.EntityFramework 程序集。当我尝试添加新用户时,应用程序会在此行中断:

var result = await UserManager.CreateAsync(user, model.Password);

我收到以下错误:

  

ORA-01918:用户' dbo'不存在

我查看了堆栈跟踪 - 基于内容 - 看起来应用程序正在尝试创建一个新数据库(见下文):

  

System.Data.Entity.CreateDatabaseIfNotExists`1.InitializeDatabase(TContext   上下文中)

我不知道为什么,因为数据库已经存在。我的web.config中只有一个连接字符串,它指向我创建的Oracle数据库。

是否有人能够让MVC会员提供商与Oracle合作?如果是这样,任何人都可以向我提供任何帮助吗?我已经查看了这个链接 - Oracle.ManagedDataAccess.EntityFramework - ORA-01918: user 'dbo' does not exist - 但我没有使用代码优先,所以我认为任何建议都不适用于我的情况。

我的连接字符串如下:

 <add name="OracleDbContext" providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=MyOracleAccountUserName;Password=MyOracleAccountPassword;Data Source=MyOracleDataSource" />
但是,我不认为它是连接字符串。我还尝试重写OnModelCreating方法,如下所示:

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.HasDefaultSchema("MySchemaName");


        modelBuilder.Entity<ApplicationUser>().ToTable("ORA_ASPNET_USERS");
        modelBuilder.Entity<IdentityRole>().ToTable("ORA_ASPNET_ROLES");
        modelBuilder.Entity<IdentityUserRole>().ToTable("ORA_ASPNET_USERSINROLES");


    }

但是,当我这样做时,我得到一个不同的错误:ORA-00904:&#34; Extent1&#34;。&#34; UserName&#34;:无效的标识符。

1 个答案:

答案 0 :(得分:0)

modelBuilder.HasDefaultSchema(&#34; MSN&#34);

您的架构名称应为UPPERCASE