2010-11-10 11 views
0

J'ai un projet qui est exécutable et j'ai créé une DLL, qui inclut des ensembles de données couramment utilisés parmi les projets (DLLforApp et App).Modification de la chaîne de connexion dans la DLL incluse dans les projets exécutables

[DLLforApp]

  1. un projet distinct App, mais dans la même solution.
  2. c'est un projet de bibliothèque de classe qui crée un fichier dll
  3. ce qui a une chaîne de connexion qui est DLLforApp.Properties.Settings.Default.ConnectionString

[App]

  1. un autre projet dans la même solution.
  2. Ce projet inclut une référence pour un ensemble d'ensembles de données .. qui est DLLforApp
  3. Ce projet a également une chaîne de connexion qui est la même que DLLforApp.

Maintenant, si je compile ce projet les éléments suivants seraient les résultats attendus ..

App.exe 
DLLforApp.dll 
App.exe.config 
... 

Je peux changer la chaîne de connexion pour l'intérieur App.exe App.exe.config, mais comment puis-je changer chaîne de connexion pour DLLforApp.dll? chaîne de connexion changement dans l'App n'affecte pas la chaîne de connexion pour DLLforApp ..

donc, ce que je fais est maintenant ..

Dans le concepteur DataSet sélectionnez la section TableAdapter et changer la ConnectionModifier propriété de interne à Publique.

Dans les formes qui utilisent DLLforApp.datasets:

public Form1() 

{ 

InitializeComponent(); 

customersTableAdapter1.Connection = new SqlConnection(WindowsFormsApplication1.Properties.Settings.Default.MyConnection); 

} 

cela réinitialiser la connexion à chaque fois pour chaque TableAdapter .. est-ce la seule façon?

Merci,

Répondre

2

en .net, toute l'application utilise le même ensemble d'entrées de configuration. Dans votre projet DLLforApp, vous pouvez facilement demander une chaîne de connexion, en supposant qu'il sera défini quelque part, comme dans le fichier app.exe.config, ou si vous préférez, vous pouvez créer un fichier dllforapp.dll.config, et il va charger à partir de ce fichier de configuration aussi.

+0

Je n'ai pas pu voir la chaîne de connexion de app.exe.config dans le projet DLLforApp. bien, ce que j'ai est Solution - projet App (namespace App) - projet DLLforApp (espace de noms DLLforApp) Si je tente d'ajouter un nouvel ensemble de données DLLforApp je ne peux choisir une chaîne de connexion au sein du projet DLLforApp .. – Devphil

+0

Pouvez-vous expliquer "Je n'ai pas pu voir la chaîne de connexion de app.exe.config dans le projet DllForApp."? – McKay

+0

@Jin essayez-vous d'ajouter un nouveau TableAdapter? Il ne charge pas les chaînes de configuration au moment du design. Vous devez lui indiquer comment vous connecter manuellement à la base de données, mais vous pouvez spécifier de ne pas utiliser cette même connexion pour charger le tableadapter lors de l'exécution. Vous pouvez le faire charger à partir d'un fichier de configuration, auquel cas l'un ou l'autre fonctionnera. – McKay

0

Vous devez ajouter une section pour la configuration de la DLL, alors ajoutez ceci dans votre application .config. Ainsi, dans la section <configSections> ... </configSections> (Il y en aura là pour vous Application principale) ajouter ceci:

<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
    <section name="MyNameSpace.MyDll.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/> 
</sectionGroup> 

et puisque vous avez nommé, vous aurez besoin 'applicationSettings du groupe pour ajouter cette sous <configuration> ... </configuration>

Cela devrait vous donner une longueur d'avance, j'ai fait la même chose pour une DLL DAL qui nécessitait une configuration spéciale pour une application - qui est l'endroit où j'ai copié cela.