Pregunta

Estoy usando LINQ to SQL para conectarme a la base de datos desde mi aplicación. Cuando cambio el entorno de producción a preparación, puedo actualizar mi cadena de conexión en web.config. Pero hay un valor más que necesito actualizar cuando cambia el entorno. Ese es el nombre de la base de datos. En el archivo del diseñador LINQ to SQL, el nombre de la base de datos se menciona como atributo como-

[System.Data.Linq.Mapping.DatabaseAttribute(Name="somedbname")]

¿Cómo puedo recoger el valor de Nombre dinámicamente de algún archivo de configuración?

Cualquier ayuda es realmente apreciada.

¿Fue útil?

Solución

como se menciona en el http://msdn.microsoft. com / es-us / library / system.data.linq.mapping.databaseattribute.name.aspx

" El nombre de la base de datos se usa solo si la conexión en sí misma no especifica el nombre de la base de datos. " ¡para que pueda eliminar este atributo y todo funcionará bien!

Otros consejos

He usado una clase de contenedor para proporcionar un contexto similar a

public DataContext Context = new DataContext(SqlConnectionString); //much simplified

Solucioné este problema editando el archivo .dbml fuera de Visual Studio (el diseñador no parece permitir el acceso a DatabaseAttribute) y eliminando la propiedad de nombre aquí:

<Database Name="BadName" Class="OutputDataContext" xmlns="http://schemas.microsoft.com/linqtosql/dbml/2007">

(tenga en cuenta que la respuesta aceptada ya no es correcta: este atributo estaba anulando mi cadena de conexión)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top