Impostare il nome del database in modo dinamico in LINQ su SQL
-
07-07-2019 - |
Domanda
Sto usando LINQ to SQL per connettermi al database dalla mia applicazione. Quando cambio ambiente dalla produzione alla gestione temporanea, posso aggiornare la mia stringa di connessione in web.config. Ma c'è un altro valore che devo aggiornare quando l'ambiente cambia. Questo è il nome del database. Nel file di progettazione LINQ to SQL, il nome del database è citato come attributo simile a
[System.Data.Linq.Mapping.DatabaseAttribute(Name="somedbname")]
Come posso prelevare dinamicamente il valore di Name da un file di configurazione?
Qualsiasi aiuto è molto apprezzato.
Soluzione
come indicato sul http://msdn.microsoft. com / it-it / library / system.data.linq.mapping.databaseattribute.name.aspx
" DatabaseName viene utilizzato solo se la connessione stessa non specifica il nome del database. " così puoi eliminare questo attributo e tutto funzionerà bene!
Altri suggerimenti
Ho usato una classe wrapper per fornire un contesto lungo le linee di
public DataContext Context = new DataContext(SqlConnectionString); //much simplified
Ho risolto questo problema modificando il file .dbml al di fuori di Visual Studio (il designer non sembra consentire l'accesso al DatabaseAttribute) e sbarazzandomi della proprietà name qui:
<Database Name="BadName" Class="OutputDataContext" xmlns="http://schemas.microsoft.com/linqtosql/dbml/2007">
(nota che la risposta accettata non è più corretta: questo attributo stava sovrascrivendo la mia stringa di connessione)