Defina o nome do banco de dados dinamicamente em LINQ to SQL
-
07-07-2019 - |
Pergunta
Eu estou usando LINQ to SQL para se conectar ao banco de dados do meu aplicativo. Quando eu estou mudando o ambiente de produção para encenação, eu posso atualizar meu seqüência de conexão no web.config. Mas há mais um valor eu preciso atualizar quando mudanças no ambiente. Esse é o nome do banco de dados. Em LINQ to SQL arquivo de designer, o nome do banco de dados é mencionado como atributo como -
[System.Data.Linq.Mapping.DatabaseAttribute(Name="somedbname")]
Como posso pegar valor de Name dinamicamente a partir de algum arquivo de configuração?
Qualquer ajuda é muito apreciada.
Solução
como mencionado no http://msdn.microsoft. com / en-us / library / system.data.linq.mapping.databaseattribute.name.aspx
"O DatabaseName é usado somente se a própria conexão não especificar o nome do banco de dados." assim você pode excluir este atributo e tudo vai funcionar bem!
Outras dicas
Eu usei uma classe wrapper para fornecer um contexto ao longo das linhas
public DataContext Context = new DataContext(SqlConnectionString); //much simplified
Eu fixo este problema editando o arquivo fora .dbml de Visual Studio (o designer não parece permitir o acesso ao DatabaseAttribute) e se livrar da propriedade name aqui:
<Database Name="BadName" Class="OutputDataContext" xmlns="http://schemas.microsoft.com/linqtosql/dbml/2007">
(note que a resposta aceite não é mais correto: este atributo foi substituindo a minha string de conexão)