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.

È stato utile?

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)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top