Question

J'utilise LINQ to SQL pour me connecter à la base de données à partir de mon application. Lorsque je change d'environnement de la production à la mise en scène, je peux mettre à jour ma chaîne de connexion dans web.config. Mais il y a une valeur supplémentaire que je dois mettre à jour lorsque l'environnement change. C'est le nom de la base de données. Dans le fichier de concepteur LINQ to SQL, le nom de la base de données est mentionné en tant qu'attribut tel que -

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

Comment puis-je récupérer la valeur de Name de manière dynamique dans un fichier de configuration?

Toute aide est vraiment appréciée.

Était-ce utile?

La solution

comme mentionné sur le http://msdn.microsoft. com / en-us / library / system.data.linq.mapping.databaseattribute.name.aspx

"Le nom de la base de données n'est utilisé que si la connexion elle-même ne spécifie pas le nom de la base de données." afin que vous puissiez supprimer cet attribut et tout va bien fonctionner!

Autres conseils

J'ai utilisé une classe wrapper pour fournir un contexte similaire à celui de

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

J'ai résolu ce problème en modifiant le fichier .dbml en dehors de Visual Studio (le concepteur ne semble pas autoriser l'accès à DatabaseAttribute) et en supprimant ici la propriété name:

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

(notez que la réponse acceptée n'est plus correcte: cet attribut remplaçait ma chaîne de connexion)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top