2012-06-26 23 views
12

Cada vez que arrastro una tabla modificada en mi dbml, VS2010 quiere que actualice la cadena de conexión a pesar de que he creado una conexión de datos con el misma información. Cada vez que esto sucede, cambia mi cadena de conexión a 'DataSourceConnectionString' y tengo que eliminarla de 5 archivos diferentes y reemplazarla con el nombre de la cadena de conexión que estaba usando previamente para que no arruine a todos los que usan el archivo a través de fuente de control. ¿Algunas ideas?Detener LINQ to SQL dbml de actualizar cadena de conexión cuando arrastro tablas al archivo dbml

Respuesta

17

Descubrí otro después de jugar con las respuestas a algunos problemas relacionados.

Para resolver el problema que tenía tuve que eliminar la conexión de datos que creé para conectarme a mi base de datos desde la ventana del explorador del servidor en VS2010. Luego debe abrir el diseñador de .dbml y hacer clic con el botón derecho en el espacio en blanco y seleccionar propiedades. Se abrirá una ventana de propiedades y habrá una sección de "Conexión", haga clic en la flecha pequeña para abrirla. Si hace clic en la fila de la cadena de conexión, aparecerá un botón con puntos (...) en ella. Al hacer clic en este botón, se abrirá una ventana de Propiedades de conexión. Esta ventana ya tendrá todas las mismas propiedades de conexión que tu .dbml ya tiene. Todo lo que tiene que hacer es hacer clic en 'Aceptar' y automáticamente creará una conexión de datos en el explorador del servidor que no le causará agregar una nueva cadena de conexión al archivo .dbml cuando lo arrastre a un nuevo objeto.

¡Yay! ¡No más eliminar cadenas de conexión adicionales cada vez que actualizo! : D

+0

Esto es muy extraño, pero muchas gracias. Odio que MS haya dejado de trabajar en LINQ to SQL. Es mucho trabajo reconstruir todo con Entity Framework. – Olaj

+0

¡Sí! funciona. pero me pregunto ¿cómo? ¿Cómo es eso? – Mohammadreza

+0

gracias. @Stuck sí esto es extraño – Mohammadreza

2

Al crear una instancia de su DataContext, use la sobrecarga que le permite especificar la cadena de conexión. Esto sobrescribirá los valores que el Diseñador haya puesto allí. Por ejemplo, en lugar de:

DataClasses1DataContext db = new DataClasses1DataContext(); 

uso:

DataClasses1DataContext db = new DataClasses1DataContext("..connection string.."); 

o

DataClasses1DataContext db = new DataClasses1DataContext(ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString); 

Hope esto es lo que busca.

+0

No pensé en hacer esto. Habría sido una molestia escribir eso un millón de veces desde que tengo clases estáticas que llamo que requieren un DataContext para ser instanciado. Lo había averiguado ayer, pero he tenido el problema durante meses, así que quise publicarlo aquí para otras personas. Gracias por la respuesta –

+0

Parece que VS 2012 finalmente lo consiguió al no hornear la cadena de conexión en el código. En VS 2012, crear instancias del contexto de datos sin parámetros llamará a un constructor que lea un valor de AppSettings en web.config. La clave de AppSettings que se utiliza se puede cambiar/establecer en la pestaña Propiedades del archivo dbml. –

Cuestiones relacionadas