2012-02-22 12 views
6

Tengo una solución con 4/5 proyectos.¿Dónde debería poner mis cadenas de conexión para mi biblioteca de clase y cómo puedo acceder a ellas?

Actualmente tengo la cadena de conexión para mi proyecto de dominio codificado en un archivo C#.

Me gustaría poner esto en un web.config o algo así. Por lo que he estado leyendo aquí y en cualquier otro lugar, debo almacenar estas cadenas de conexión en la configuración web de la aplicación que realiza la llamada.

Si es así, ¿cómo puedo acceder?

Cuando hago algo como esto en mi biblioteca de clases:

ConnectionStringSettingsCollection connectionStrings = 
    connectionStringsSection.ConnectionStrings; 

El tipo o espacio no se puede conocer, me falta una referencia o algo?

+0

Por alguna extraña razón (Microsoft, usted sabe) el ensamblaje requerido no está referenciado por defecto. Debe agregar manualmente la referencia al ensamblado 'System.Configuration' a cada proyecto que necesite usarlo. –

Respuesta

4

Hay un esquema existente en el esquema config para las cadenas de conexión.

Esto se conoce con el elemento de <configuration>:

<connectionStrings> 
    <add name="example" connectionString="..."/> 
</connectionStrings> 

En su código, se debe utilizar ConfigurationManager para acceder a ellos. Para tener la referencia, debe agregar un espacio de nombre using System.Configuration; a su archivo y la referencia de ensamblado System.Configuration.dll a su proyecto (si no está ya allí).

string conn = ConfigurationManager.ConnectionStrings["example"]; 
+0

ConfigurationManager es una buena opción, y otras 2 opciones que recuerdo ahora: el registro y el archivo binario (utilizando el formateador binario), verifique esto: http: // stackoverflow.com/questions/9375112/storage-application-settings-in-project-folder-rather-than-appdata/9375425 # 9375425 –

+2

@AmenAyach - Desde que OP preguntó específicamente sobre 'web.config', el registro y los archivos binarios no son realmente adecuado. – Oded

+0

+1 mi mal no me di cuenta, acabo de mirar las etiquetas :) –

3

Definir con su solicitud y la clase accessin lib principal

ConnectionStrings: Añadir utilizando System.Configuration; add ref: System.Configuration;

ConfigurationManager.ConnectionStrings["key"] 

alternetive

System.Configuration.ConfigurationSettings.AppSettings["key"]) 
+0

esto es solo si su cadena de conexión está en "AppSettings", realmente debería estar en la etiqueta "ConnectionStrings" para web. config files – musefan

+1

¿Por qué no utilizar la sección 'ConnectionStrings' integrada expuesta por' ConfigurationManager'? El uso de 'AppSettings' para las cadenas de conexión se ha desaconsejado desde .NET 2.0. – Oded

5

Es necesario añadir una referencia a System.Configuration en su proyecto principal.

entonces se puede acceder cadena de conexión como esta ...

System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;//<- last bit for a string version of the full connection string 

ConfigurationManager también le permitirá acceder a una serie de otras propiedades útiles de su archivo web.config (esto también funciona para archivos app.config)

0

usa esto dentro de tu código.

String sqlDbConn = 
     ConfigurationManager.ConnectionStrings["ApplicationServices"].ToString(); 

El nombre también debe definirse en su configuración web;

<connectionStrings> 
<add name="ApplicationServices" 
     connectionString="You database information" 
     /> 

</connectionStrings> 

y también agregar usando System.Configuration; namespace

+1

La llamada 'ToString()' es redundante. – Oded

Cuestiones relacionadas