我正在尝试使用Oracle.ManagedDataAccess将我的C#应用程序连接到oracle数据库。但是,当我尝试创建数据库时,它给出了下面的错误。关于我设置错误的任何想法?我知道提供程序名称设置正确,因为我能够以与另一个C#应用程序完全相同的方式连接到数据库。
“请求的数据库ConnectionString.SomeName没有在连接字符串中设置有效的ADO.NET提供程序名称”
在machine.config上:
<add name="ConnectionString.SomeName" providerName="Oracle.ManagedDataAccess.Client" connectionString="Data Source=databaseSource;User Id=some_id;Password=some_password" />
在web.config上:
<appSettings>
<add key="ConnectionString1" value="ConnectionString.SomeName"/>
</appSettings>
我的代码:
DatabaseProviderFactory factory = new DatabaseProviderFactory();
Database = factory.Create(ConfigurationManager.AppSettings["ConnectionString1"]);
答案 0 :(得分:1)
在Machine.config中,检查以确保您有两个部分进行设置。一个在“和另一个在。下面的例子:
<appSettings>
<add key="ConnectionString.SomeName" value="Data Source=databaseSource;User Id=some_id;Password=some_password"/>
</appSettings>
<connectionStrings>
<add name="ConnectionString.SomeName" connectionString="Data Source=databaseSource;User Id=some_id;Password=some_password" providerName="Oracle.DataAccess.Client"/>
</connectionStrings>
答案 1 :(得分:1)
appSettings条目中的“key”应与connectionStrings条目中的“name”匹配。 例如,在您的情况下,您应该在appSettings中使用此条目:
<add key="ConnectionString.SomeName" value="Data Source=dataSource;User ID=some_id;Password=some_password" />
答案 2 :(得分:0)
对我有用的解决方案是将以下内容添加到App.config / Web.config(在配置标记内):
<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, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>