Establecer el nombre de la base de datos dinámicamente en LINQ to SQL
-
07-07-2019 - |
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.
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)