Application über Bibliotheken

stimmen
0

Ich versuche, zu abstrahieren aus aller Datenbank-Code in eine separate Bibliothek und verwenden dann diese Bibliothek in meinem Code. Alle Datenbankverbindungen verwenden getippt Tableadapters getan, die ich per Drag & Drop in Datensätzen in VS2005 erstellen, eine Verbindungszeichenfolge aus den AppSettings verwenden.

Das Problem, das ich habe nicht zu lösen in der Lage ist, dass .NET die Bibliotheken appSettings auf das andere Projekt nicht propagieren, die es verwenden.

Kurz gesagt, habe ich eine Datenbank-Layer-Bibliothek, MyProgram.DbLayer, die von anderen Projekten verwendet wird, wie MyProgram.Client etc. Wenn ich alle Datensätze in der .client hatte, war die Connectionstring in MyProgram.Client.exe.config so dass ich konnte es nach dem Bauprozess ändern. Wenn ich es in die MyProgram.DbLayer diese Einstellung bewegt wird mir nicht avaliable, nachdem ich die Binärdateien zu bauen.

EDIT: Dies scheint ein allgemeineres Problem mit Application zu sein.

Was mir aufgefallen war, dass wenn ich eine Einstellung manuell nur in einer Bibliothek verwendet hinzufügen wird es richtig gelesen werden. Das einzige, was ich jetzt brauche, ist für die Einstellung automatisch auch in der .config-Datei enthalten sein.

Veröffentlicht am 09/12/2008 um 15:59
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
1

Wenn ich Ihr Problem richtig verstanden, es klingt wie Sie brauchen,

1.) Ein gemeinsamer Anwendungskontext für alle Datenzugriff Anrufe

oder

2.) Eine andere Möglichkeit, die Konfigurationseinstellungen für den Zugriff auf

1: Wickeln Sie Ihre Datenschicht in einem Dienst, der unter einem einzigen Kontext ausgeführt wird (IIS, Windows-Dienst, usw.)

2: Verwenden Sie den Configuration Management-Mechanismus nicht, die Sie geliefert werden. Verwenden Sie stattdessen Eigenschaftsdateien in einem bestimmten Ort.

Vergessen Sie nicht, obwohl, dass die Konfigurationseinstellungen Kaskade von verschiedenen Ebenen. Zum Beispiel ... wenn Sie eine Einstellung in machine.config hinzufügen, dann jeder Anwendung auf dem Computer ausgeführt wird, dass die Einstellung nur verwenden, wenn es auf einem niedrigeren Niveau ersetzt ... Das kann ein guter Weg, um so eingerichtet werden, eine einheitliche Einstellung in Ihrem Konfigurationsdateien.

Beantwortet am 09/12/2008 um 16:22
quelle vom benutzer

stimmen
1

AppSettings / Connection wird immer von dem aktuell laufenden AppPool gelesen werden.

Damit meine ich:

Wenn ich A.exedie eine Klasse hat DAL.cs. DAL.cs liest eine Verbindungszeichenfolge von Config, und es gibt , "abc"wie erwartet.

Ich habe dann bewegen DAL.cs zu seinem eigenen Projekt und damit seine eigene Montage. Ich kann es immer noch die Verbindungszeichenfolge aus app.config haben rufen, aber ich muss die Montage in einer laufenden Anwendung auf „Host“, und fügen Sie diese Anwendungen app Config die Verbindungszeichenfolge . So erstelle ich eine neue app.config , und geben Sie die Verbindungszeichenfolge "xyz"in ihm, wenn es läuft, ist es wie erwartet läuft.

Wenn ich nun die Referenz im ändern A.exeProjekt die neue zu verwenden DAL.dll, welche Verbindungszeichenfolge halten Sie sie haben? "xyz"? Nee! Es wird die Verwendung "abc"wie zuvor , weil das nach wie vor in der Anwendungskonfigurationsdatei für konfiguriert ist A.exe.

Ich weiß , das funktioniert , weil ich DAL - Code in vielen freigegebenen Windows verwendet und Web - Anwendungen.

Wenn irgendetwas davon unklar ist, oder hilft nicht Ihr Problem, lassen Sie mich bitte durch Kommentare zu dieser Antwort wissen.

Update folgenden Kommentar von OP

Mit „host“ meine ich eine Anwendung, die auf dem gemeinsamen Code ruft. Dies kann ein Windows oder eine Web-Anwendung sein, im Grunde ist es der Anwendungskontext.

Sie müssen Einträge in den Konfigurationsdateien für jede Anwendung erstellen, die den gemeinsamen Code verwendet. Wenn ich Ihre ursprüngliche Frage falsch verstanden (durchaus möglich, ist es ein langer Tag!) Und Sie möchten, als auch um die Konfiguration zentralisieren, dann würden Sie brauchen:

  • Erstellen Sie eine Form von zentralen Speicher (sei es XML, DB, was auch immer).
  • Verbessern Sie Ihre gemeinsamen Code Standardwerte müssen es ermöglichen, die zentrale Speicherung zu verbinden.
  • Von dort aus kann der Code dann so konfiguriert, sich auf der Grundlage der Informationen in dem Konfigurationsspeicher.

Hoffe das hilft :)

Beantwortet am 09/12/2008 um 16:14
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more