2009-05-06 8 views
2

J'essaie de comprendre comment créer un contexte dynamique, et ce que je veux dire par là, c'est que j'ai deux bases de données: une pour les tests, et une pour la production. Selon l'endroit où mon site Web est hébergé, je souhaite que mon contexte pointe vers l'un des deux. Donc, dans mon web.config je:Contexte LINQ dynamique

<add name="Testing_ChannelsEntities" connectionString="removed for brevity" providerName="System.Data.EntityClient" /> 
<add name="Production_ChannelsEntities" connectionString="removed for brevity" providerName="System.Data.EntityClient" /> 

S'il vous plaît ne prenez pas-up accroché sur le fait que j'ai enlevé le connectionString pour cet exemple. Notez simplement que j'ai un test et une connexion de production dans le fichier web.config.

Alors, voici mon codebehind que j'attendre à créer un contexte à l'essai connectionString:

using (ChannelsEntities chEntity = new ChannelsEntities("Testing_ChannelsEntities")) { 
    // removed the business logic because it's not relevant at all 
} 

Une fois que l'exécution frappe l'instruction à l'aide, je reçois l'erreur suivante:

Format du la chaîne d'initialisation n'est pas conforme à la spécification commençant à l'index 0.

Qu'est-ce qui me manque ici? Cela devrait être facile à faire.

Répondre

0

Je l'ai fait similaire. Essayez ceci -

using (ChannelsEntities chEntity = new ChannelsEntities("name=Testing_ChannelsEntities")) {} 
+0

Étonnamment, cela fonctionne. Je ne m'y attendais pas à cause de l'ensemble "name =", mais le constructeur doit le gérer d'une manière ou d'une autre. – Jagd

0

Essayez:

using (ChannelsEntities chEntity = new ChannelsEntities(WebConfigurationManager.ConnectionStrings["Testing_ChannelsEntities"].ConnectionString)) { 
    // removed the business logic because it's not relevant at all 
} 
+0

Malheureusement, la bibliothèque WebConfigurationManager fait partie de System.Web et cette partie est extraite dans une bibliothèque d'entreprise (bibliothèque de classes), qui ne fait évidemment pas référence aux bibliothèques System.Web. Je pourrais le faire pour le faire, mais je ne veux pas descendre cette route à moins d'y être obligé. En outre, le ConnectionStrings est une propriété, pas une méthode, donc je ne suis pas sûr que votre syntaxe exacte ferait l'affaire de toute façon. – Jagd

+0

J'ai fait quelques tests sur ce sujet, et j'ai trouvé que ça marcherait, mais j'ai dû le modifier un peu. J'ai dû ajouter des références à la bibliothèque System.Web.Configurations dans ma couche de gestion, et j'ai dû modifier les ConnectionStrings à utiliser comme une propriété énumérée. Je vois que vous avez édité votre code pour le faire maintenant, donc je suppose que ce point est mote. – Jagd

+0

Je programme principalement dans vb.net d'où la parenthèse plutôt que des crochets. Heureux que tu es parvenu à le faire fonctionner. –

0

Nous mettons notre chaîne de connexion dans un web.config racine. Vous pouvez référencer la chaîne de connexion par son nom dans votre répertoire virtuel et hériter les paramètres de votre racine web.config.

Questions connexes