我正在尝试将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;:无效的标识符。
答案 0 :(得分:0)
modelBuilder.HasDefaultSchema(&#34; MSN&#34);
您的架构名称应为UPPERCASE