我正在尝试使用Oracle.ManagedDataAccess 6.121.1.0提供程序实现代码第一次迁移,但是根本没有成功。
当我收到ORA代码时,我假设连接已成功打开。但是迁移是失败的,因为可能,提供程序表现为SQL Server,而不是Oracle。我认为这是托盘使用“dbo”作为默认模式。
这是我的web.config设置:
<configuration>
<configSections>
<section name="entityFramework"
type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection,EntityFramework,Version=6.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089"
requirePermission="false" />
<section name="Oracle.ManagedDataAccess.Client"
type="OracleInternal.Common.ODPMSectionHandler,Oracle.ManagedDataAccess,Version=4.121.1.0,PublicKeyToken=89b483f429c47342" />
</configSections>
<entityFramework>
<contexts>
<context type="MyProject.Context.MainContext,MyProject.Context">
<databaseInitializer type="MyProject.Context.Config.ContextInitializer,MyProject.Context" />
</context>
</contexts>
<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.1.0,PublicKeyToken=89b483f429c47342" />
</providers>
</entityFramework>
<system.data>
<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,PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>
<connectionStrings>
<add name="MainContext"
providerName="Oracle.ManagedDataAccess.Client"
connectionString="Data Source=OracleServer:1521/BRSYSDS;User ID=USER;Password=PASSWORD;" />
</connectionStrings>
<!-- other settings -->
</configuration>
这里Stacktrace:
[OracleException (0x77e): ORA-01918: user ‘dbo’ does not exist] OracleInternal.ServiceObjects.OracleCommandImpl.VerifyExecution(OracleConnectionImpl connectionImpl,Int32& cursorId,Boolean bThrowArrayBindRelatedErrors,OracleException& exceptionForArrayBindDML,Boolean& hasMoreRowsInDB,Boolean bFirstIterationDone) +652 OracleInternal.ServiceObjects.OracleCommandImpl.VerifyExecution(OracleConnectionImpl connectionImpl,Boolean bFirstIterationDone) +39 OracleInternal.ServiceObjects.OracleCommandImpl.ExecuteNonQuery(String commandText,OracleParameterCollection paramColl,CommandType commandType,OracleConnectionImpl connectionImpl,Int32 longFetchSize,Int64 clientInitialLOBFS,OracleDependencyImpl orclDependencyImpl,Int64[]& scnFromExecution,OracleParameterCollection& bindByPositionParamColl,Boolean& bBindParamPresent,Boolean isFromEF) +7480 Oracle.ManagedDataAccess.Client.OracleCommand.ExecuteNonQuery() +678 System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.b__0(DbCommand t,DbCommandInterceptionContext1 c) +10 System.Data.Entity.Infrastructure.Interception.InternalDispatcher 1.Dispatch(TTarget target,Func3 operation,TInterceptionContext interceptionContext,Action 3 executing,Action3 executed) +72 System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommand command,DbCommandInterceptionContext interceptionContext) +357 System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery() +104 System.Data.Entity.Migrations.DbMigrator.ExecuteSql(DbTransaction transaction,MigrationStatement migrationStatement,DbInterceptionContext interceptionContext) +152 System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable 1 migrationStatements,DbTransaction transaction,DbInterceptionContext interceptionContext) +82 System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable1 migrationStatements,DbConnection connection) +626 System.Data.Entity.Migrations.<>c__DisplayClass30.<ExecuteStatements>b__2e() +19 System.Data.Entity.Infrastructure.DefaultExecutionStrategy.Execute(Action operation) +9 System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable 1 migrationStatements,DbTransaction existingTransaction) +194 System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable1 migrationStatements) +7 System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId,XDocument targetModel,IEnumerable 1 operations,IEnumerable1 systemOperations,Boolean downgrading,Boolean auto) +825 System.Data.Entity.Migrations.DbMigrator.AutoMigrate(String migrationId,VersionedModel sourceModel,VersionedModel targetModel,Boolean downgrading) +564 System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable 1 pendingMigrations,String targetMigrationId,String lastMigrationId) +404 System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration) +447 System.Data.Entity.Migrations.<>c__DisplayClassc.b__b() +13 System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase) +422 System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration) +78 System.Data.Entity.Internal.DatabaseCreator.CreateDatabase(InternalContext internalContext,Func3 createMigrator,ObjectContext objectContext) +89 System.Data.Entity.Internal.InternalContext.CreateDatabase(ObjectContext objectContext,DatabaseExistenceState existenceState) +116 System.Data.Entity.Database.Create(DatabaseExistenceState existenceState) +218 System.Data.Entity.DropCreateDatabaseAlways 1.InitializeDatabase(TContext context) +137
我也有同样的问题,并由Thiago Lunardi的回应解决。谢谢。我没有足够的声誉来表决你的回应。在这里提到,在UPPERCASE中设置我的模式名后,我成功了。
将其放在您的新的dbContext类的上下文文件中,如下所示:
public partial class MyAppContext : DbContext
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("UPPERCASE_SCHEMA_NAME");
... (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|