【发布时间】:2019-02-12 02:22:11
【问题描述】:
我正在使用 EF6 和 Oracle 数据库开发一个 ASP.NET MVC 5 应用程序。
我使用的是代码 First 方法,我创建了我的实体和 My Context 类,然后我尝试了 Enable and Add a Migration 但我收到了这个错误。
但是,如果我使用 SQL SERVER 代替 Oracle 数据库,它可以正常工作,但不能用于 Oracle 数据库。
这是错误:
System.Data.Entity.Core.ProviderIncompatibleException: An error occurred accessing the database. This usually means that the connection to the database failed. Check that the connection string is correct and that the appropriateDbContext 构造函数用于指定它或在 应用程序的配置文件。 有关 DbContext 和连接的信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=386386。 有关失败的详细信息,请参阅内部异常。 ---> System.Data.Entity.Core.ProviderIncompatibleException:提供者 没有返回 ProviderManifestToken 字符串。 ---> Oracle.ManagedDataAccess.Client.OracleException:ORA-12154:TNS:不可能的 de résoudre l'identificateur de connexion indiqué ---> OracleInternal.Network.NetworkException:ORA-12154:TNS:不可能 de résoudre l'identificateur de connexion indiqué 在 OracleInternal.Network.AddressResolution..ctor(字符串 TNSAlias,字符串 instanceName) 在 OracleInternal.Network.OracleCommunication.DoConnect(字符串 tnsDescriptor) 在 OracleInternal.Network.OracleCommunication.Connect(字符串 tnsDescriptor,布尔值 doNAHandshake,字符串 IName) 在 OracleInternal.ServiceObjects.OracleConnectionImpl.Connect(ConnectionString cs,布尔 bOpenEndUserSession,OracleConnection connRefForCriteria, 字符串实例名) --- 内部异常堆栈跟踪结束 --- 在 OracleInternal.ConnectionPool.PoolManager
3.Get(ConnectionString csWithDiffOrNewPwd, Boolean bGetForApp, OracleConnection connRefForCriteria, String affinityInstanceName, Boolean bForceMatch) at OracleInternal.ConnectionPool.OraclePoolManager.Get(ConnectionString csWithNewPassword, Boolean bGetForApp, OracleConnection connRefForCriteria, String affinityInstanceName, Boolean bForceMatch) at OracleInternal.ConnectionPool.OracleConnectionDispenser3.Get(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securePassword, SecureString secureProxyPassword, OracleConnection connRefForCriteria) 在 Oracle.ManagedDataAccess.Client.OracleConnection.Open() 在 Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices.GetDbProviderManifestToken(DbConnection 联系) 在 System.Data.Entity.Core.Common.DbProviderServices.GetProviderManifestToken(DbConnection 联系) --- 内部异常堆栈跟踪结束 --- 在 System.Data.Entity.Core.Common.DbProviderServices.GetProviderManifestToken(DbConnection 联系) 在 System.Data.Entity.Utilities.DbProviderServicesExtensions.GetProviderManifestTokenChecked(DbProviderServices providerServices,DbConnection 连接) --- 内部异常堆栈跟踪结束 --- 在 System.Data.Entity.Utilities.DbProviderServicesExtensions.GetProviderManifestTokenChecked(DbProviderServices providerServices,DbConnection 连接) 在 System.Data.Entity.Infrastructure.DefaultManifestTokenResolver.c__DisplayClass1.b__0(Tuple3 k) at System.Collections.Concurrent.ConcurrentDictionary2.GetOrAdd(TKey 键,Func2 valueFactory) at System.Data.Entity.Infrastructure.DefaultManifestTokenResolver.ResolveManifestToken(DbConnection connection) at System.Data.Entity.Utilities.DbConnectionExtensions.GetProviderInfo(DbConnection connection, DbProviderManifest& providerManifest) at System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection) at System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext) at System.Data.Entity.Internal.RetryLazy2.GetValue(TInput 输入) 在 System.Data.Entity.Internal.LazyInternalContext.InitializeContext() 在 System.Data.Entity.Internal.LazyInternalContext.get_ModelBeingInitialized() 在 System.Data.Entity.Infrastructure.EdmxWriter.WriteEdmx(DbContext 上下文,XmlWriter 作家) 在 System.Data.Entity.Utilities.DbContextExtensions.c__DisplayClass1.b__0(XmlWriter w) 在 System.Data.Entity.Utilities.DbContextExtensions.GetModel(Action`1 写XML) 在 System.Data.Entity.Utilities.DbContextExtensions.GetModel(DbContext 语境) 在 System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration 配置、DbContext usersContext、DatabaseExistenceState 存在状态,布尔调用由创建数据库) 在 System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration 配置) 在 System.Data.Entity.Migrations.Design.MigrationScaffolder..ctor(DbMigrationsConfiguration 迁移配置) 在 System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.RunCore() 在 System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run() 访问数据库时发生错误。这通常意味着与数据库的连接失败。检查连接是否 字符串是正确的,并且适当的 DbContext 构造函数是 用于指定它或在应用程序的配置文件中找到它。 请参阅http://go.microsoft.com/fwlink/?LinkId=386386 了解有关信息 DbContext 和连接。有关详细信息,请参阅内部异常 失败*。
这是我的连接字符串:
<connectionStrings>
<add name="BiatContext" providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=SYSTEM;Password=admin;Data Source=oracle" />
</connectionStrings>
【问题讨论】:
-
得到类似的异常。任何帮助
标签: entity-framework oracle11g asp.net-mvc-5 ef-code-first entity-framework-migrations