Estoy usando Oracle.ManagedDataAccess Nuget Package Versión 12.1.022 en mi proyecto C# (.NET 4.0). El paquete crea automáticamente entradas en el archivo app.config. ¿Cómo puedo leer la cadena de origen de datos de este archivo para poder conectarme a la base de datos?
System.Configuration.ConfigurationManager.AppSettings.Get("fuente de datos");
no me funciona
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> </configSections> <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> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <publisherPolicy apply="no" /> <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" /> <bindingRedirect oldVersion="4.121.0.0 - 4.65535.65535.65535" newVersion="4.121.2.0" /> </dependentAssembly> </assemblyBinding> </runtime> <oracle.manageddataaccess.client> <version number="*"> <dataSources> <dataSource alias="MyDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=100.100.100.100)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=myservice.com)))" /> </dataSources> </version> </oracle.manageddataaccess.client> </configuration>Por lo general, haría referencia al alias en una cadena de conexión estándar:
<connectionStrings> <add name="MyConnection" connectionString="Data Source=MyDataSource;User Id=scott;Password=tiger;"/> </connectionStrings>Entonces usaría el método estándar para recuperar la cadena:
ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;También tenga en cuenta que el alias en la sección de fuente de datos es opcional. Puede incrustar el descriptor directamente en la cadena de conexión:
<connectionStrings> <add name="MyConnection" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=100.100.100.100)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=myservice.com)));User Id=scott;Password=tiger;"/> </connectionStrings>También puede hacer referencia a alias en un archivo tnsnames.ora. De forma predeterminada, el controlador busca un tnsnames.ora en la carpeta exe, un directorio especificado en una variable de entorno TNS_ADMIN o la variable de configuración TNS_ADMIN:
http://docs.oracle.com/cd/E48297_01/doc/win.121/e41125/featConfig.htm#autoId6 http://docs.oracle.com/cd/E48297_01/doc/win.121/e41125/featConfig .htm#autoId7
Puede hacer referencia a la fuente de datos ya definida en la cadena de conexión
<oracle.manageddataaccess.client> <version number="*"> <dataSources> <dataSource alias="MyDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=100.100.100.100)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=myservice.com)))" /> </dataSources> </version> </oracle.manageddataaccess.client>por ejemplo, en este caso específico:
public class OracleDBManager { private OracleConnection _con; private const string connectionString = "User Id={0};Password={1};Data Source=MyDataSource;"; private const string OracleDBUser = "exampleUser"; private const string OracleDBPassword = "examplePassword"; public OracleDBManager() { InitializeDBConnection(); } ~OracleDBManager() { if (_con != null) { _con.Close(); _con.Dispose(); _con = null; } } private void InitializeDBConnection() { _con = new OracleConnection(); _con.ConnectionString = string.Format(connectionString, OracleDBUser, OracleDBPassword); _con.Open(); } }Puede crear un archivo de clase separado que devuelva la cadena de conexión de esta manera:
public class OracleDbConnection { public static OracleConnection GetConnection() { const string connectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=PROD))); User Id=userId;Password=password;"; var connection=new OracleConnection(connectionString); return connection; } }Luego puede llamarlo así donde necesita acceder a Oracle db-
var oracleConnection = OracleDbConnection.GetConnection(); oracleConnection.Open();