2009-07-03 20 views
0

Ich habe eine Klassenbibliothek erstellt, die drei Entitätsmodelle für drei Datenbanken enthält, mit denen andere Klassen eine Verbindung herstellen müssen. Diese Klassenbibliothek wird dann von drei verschiedenen Webdiensten und einer Website verwendet. Diese sind alle auf ihrem eigenen Server installiert, so dass es nicht einfach ist, sie die gleichen Verbindungsdaten teilen zu lassen.Wechseln der Verbindungszeichenfolgen

In meinen web.config-Dateien Ich habe diese Zeile:

<connectionStrings configSource="Dependencies.ConnectionStrings.Config"/> 

Dies wird die Verbindungszeichenfolgen aus einer separaten XML-Datei laden. Es funktioniert gut, aber es bedeutet auch, dass ich jetzt 5 verschiedene Kopien dieser Dependencies.ConnectionStrings.Config Datei habe. Ich würde es vorziehen, während der Entwicklung eine einzige Datei zu verwenden.

Meine Lösung enthält jedoch auch vier Setup-Projekte und in diesen Setups müssen die Konfigurationsdateien nebeneinander liegen.

Also, wie sage ich VS, um eine einzige Konfigurationsdatei zwischen mehreren Projekten zu teilen, ohne web.config zu ändern?


Um es etwas komplizierter zu machen, verwendet die Klassenbibliothek eine app.config, um die Verbindungszeichenfolgen zu speichern. Und ich kann app.config nicht sagen, um die Verbindungszeichenfolgen mit einer separaten Konfigurationsdatei zu verknüpfen, anscheinend ... Eine zusätzliche Komplikation besteht darin, dass die Verbindungszeichenfolgen nach der Installation von der Systemadministration geändert werden müssen. Das liegt daran, dass es sich um eine andere Datenbank als die Entwicklungsdatenbanken kümmern muss. (Tatsächlich verwende ich während der Entwicklung 3 Datenbanken, um die Entitätslogik aufzuteilen. Die Test- und Produktionsumgebungen verwenden nur eine einzige Datenbank.) Meine aktuelle Lösung ist einfach. Ich habe die Datei "Dependencies.ConnectionStrings.Config" in einen separaten Ordner in meiner Projektmappe eingefügt und ziehen Sie sie regelmäßig in die anderen Projekte, um sie zu aktualisieren. Obwohl dies funktioniert, ist es fehleranfällig ...

Antwort

1

Das große Problem ist, dass Sie keine verknüpfte Konfigurationsdatei in der Ordnerhierarchie über der aktuellen Hauptkonfigurationsdatei haben können, was die Freigabe erschwert.

Haben Sie nachgesehen, dieses irgendwo höher in der Konfigurationshierarchie zu platzieren - vielleicht in der root web.config oder machine.config?

Eine andere Option ist, dass einige Vorerstellungsereignisse diese Dateien erstellen, sodass Sie sich keine Gedanken darüber machen müssen, mehrere Kopien davon zu haben. Ich habe die prebuild-Option ziemlich erfolgreich verwendet, wenn ich eine andere Verbindungszeichenfolge pro Entwickler erstellen muss.

+0

Das Stammverzeichnis web.config wäre ebenfalls ein guter Speicherort, aber die Verbindungszeichenfolgen ändern sich manchmal während der Entwicklung und beim Testen. Das Ändern einer einfachen XML-Datei ist für die Tester, die keine Erfahrung mit IIS selbst haben, etwas einfacher. (Deshalb muss ich Setups erstellen.) –

1

Ich weiß nicht, ob es möglich ist zu tun, was Sie fragen, ohne die Datei zu ändern.

ich damit einverstanden wäre viel besser, wenn Sie eine Datei hatte, die von allen Servern verwendet werden, dann werden Sie nicht Versionierungsprobleme, usw.

ehrlich zu sein, das ganze Setup ziemlich kompliziert klingt und möglicherweise fehleranfällig, wenn die falsche Konfigurationsdatei auf dem falschen Server gelandet ist.

Ich wäre versucht, die Verbindungsinformationen in einer gemeinsamen Datenbank zu zentralisieren. Sie können die Verbindungszeichenfolgen aufzeichnen, die jeder Server verwenden soll (wird für den Servernamen gespeichert). Auf diese Weise würde jeder Server wissen, welche Verbindungszeichenfolgen er verwenden sollte. Dies setzt natürlich voraus, dass Ihre Server alle einen zentralen Datenbankserver kontaktieren können (abhängig von Ihrer Konfiguration).

Natürlich gibt es andere Möglichkeiten, um das gewünschte Ergebnis zu erzielen, aber ich denke, Sie könnten eine viel elegantere Lösung erhalten, wenn Sie Ihre eigenen rollen, anstatt zu versuchen, die eingebauten App-Einstellungen zu biegen, was Sie wollen.

Verwandte Themen