Linq to Sql Ensemble de la chaîne de connexion de façon dynamique en fonction de la variable d'environnement
J'ai besoin de ma chaîne de connexion pour Linq to Sql basé sur une variable d'environnement. J'ai une fonction qui renvoie la chaîne de connexion à partir du web.config basée sur la variable d'environnement, mais comment puis-je obtenir Linq à toujours utiliser ce "créé dynamiquement" chaîne de connexion (de préférence sans avoir à préciser à chaque fois)?
Je sais que je peux spécifier la chaîne de connexion en utilisant le constructeur, mais comment cela fonctionne lorsque vous utilisez le datacontext dans un LinqDataSource?
OriginalL'auteur Ryan | 2009-07-27
Vous devez vous connecter pour publier un commentaire.
Utilisation:
Pour un LinqDataSource, intercepter le ContextCreating de l'événement et de créer le DataContext manuellement comme ci-dessus:
De MSDN:
Il peut, oui. Édité.
OriginalL'auteur JoshJordan
Ouvrir le LINQ to SQL designer, et ouvrez l'onglet Propriétés du concepteur (le schéma lui-même), développez la Connexion et définir
Application Settings
àFalse
. Enregistrer.Fermer et ouvrir votre DataContext concepteur de fichier (dbml_name.le concepteur.cs) et de modifier le DataContext constructeur. Vous remarquerez immédiatement la façon dont votre chaîne de connexion décidé de sauter ici alors que vous avez désactivé l'application des paramètres de l'échelle. Donc la partie de l'accent sur l'espèce est en train de modifier la
base()
héritier. Renommer ConnString” ci-dessous en fonction de votre propre. J'ai aussi remarqué unDatabaseAttribute
sur la classe à laquelle je ne pense pas qu'joue un rôle important et a des conséquences sur les paramètres de connexion. Vous aurez également besoin d'une référence àSystem.Configuration
:public dbDataContext() : base(ConfigurationManager.ConnectionStrings["MyConnString"].ConnectionString, mappingSource)
Ouvrir le
App.config
ouWeb.config
en vedette dans le projet, où vos classes LINQ to SQL résident, et de renommer la chaîne de connexion que vous avez défini comme “MyConnString“.Maintenant, vous devez Couper la totalité de l'entrée avec un changement de nom et le Coller dans le
App.config
ouWeb.config
de l'application qui est d'accéder aux données, par exemple une application web, Silverlight, WPF, WCF, etc. Il est important que vous modifiez le fichier de configuration de l'application appelante qui est de l'accès des données, comme leConfigurationManager
défini dans vos classes LINQ to SQL va chercher la.config
fichier à partir d'où l'appel de l'application est en cours d'exécution à partir, peu importe où vos classes LINQ to SQL ont été Définis. Comme vous pouvez le voir, il fonctionne un peu différemment d'avant.Maintenant un Clic Droit et ouvrez les Propriétés de votre DAL ou d'un projet contenant vos classes LINQ to SQL et de supprimer la chaîne de connexion “Paramètre d'Application” de référence sur l'onglet Paramètres.
Reconstruire. Vous êtes tous fait, maintenant il suffit de faire une recherche dans les Fichiers en vérifier peut-être votre nom de base de données que vous le savez, a été présenté dans la chaîne de connexion pour vérifier les retardataires, il ne devrait pas être.
OriginalL'auteur Saral Doshi
Le DataContext de la classe a un constructeur qui prend une chaîne de connexion.
Oui - en tant que Josh a déjà expliqué. Vous devez bien spécifié dans votre question initiale.
OriginalL'auteur RichardOD
Si vous ne voulez pas ajouter l'écouteur d'événement pour chaque page, vous pouvez suivre ce lien
http://goneale.com/2009/03/26/untie-linq-to-sql-connection-string-from-application-settings/
OriginalL'auteur Kieran
vous pouvez modifier la chaîne de connexion de façon dynamique si vous allez mettre en œuvre la OnCreated() fonction. Cette fonction est une fonction partielle et il peut être mis en œuvre sous la forme de plusieurs fichiers autres que celui où vous dbml existe.
de détails s'il vous plaît voir cet article
http://aspilham.blogspot.com/2011/01/how-do-i-set-connection-string-in-linq.html
OriginalL'auteur Mamoon ur Rasheed