ApplicationSettings całej biblioteki

głosy
0

Próbuję abstrakcyjnego wszystkie kodu bazy danych do osobnego biblioteki, a następnie użyć tej biblioteki w całym moim kodu. Wszystkie połączenia są wykonywane przy użyciu bazy danych wpisywanych TableAdapters że tworzę poprzez przeciąganie i upuszczanie w zbiorach danych w VS2005 przy użyciu ciąg połączenia od AppSettings.

Problem, że nie udało się rozwiązać, że .NET nie propagować bibliotek AppSettings do innego projektu, który jest używany.

Krótko mówiąc, mam bibliotekę warstwy bazy danych, MyProgram.DbLayer, który jest używany w innych projektach, takich jak MyProgram.Client itd. Kiedy miał wszystkie zestawy danych w .Client ConnectionString było tak, że w MyProgram.Client.exe.config mogę go zmienić po kompilacji. Kiedy przeniósł go do MyProgram.DbLayer że ustawienie nie jest dostępna do mnie po zbudować binaria.

EDIT: To wydaje się być bardziej ogólny problem z ApplicationSettings.

Co zauważyłem, że jeśli ręcznie dodać ustawienie stosowane tylko w bibliotece zostanie poprawnie odczytany. Jedyną rzeczą, którą trzeba teraz jest za ustawienie być automatycznie uwzględniane w pliku .config również.

Utwórz 09/12/2008 o 15:59
źródło użytkownik
W innych językach...                            


2 odpowiedzi

głosy
1

Jeśli rozumiem Twojego problemu poprawnie, to brzmi jak trzeba

1.) Wspólny kontekst aplikacji dla wszystkich połączeń dostępu do danych

lub

2.) inny sposób dostępu do ustawień konfiguracyjnych

1: Owiń warstwy danych w ramach usługi, która biegnie pod jednym kontekście (IIS, Windows Service, etc)

2: Nie używać mechanizmu Configuration Management, które są dostarczane. Zamiast korzystać z plików własności w określonym miejscu.

Nie zapominajmy jednak, że ustawienia konfiguracyjne kaskady różnych poziomach. Na przykład ... jeśli dodać ustawienie w machine.config, to każda aplikacja działa na tej maszynie będzie korzystać z tego ustawienia, chyba że zostanie zastąpiony na niższym poziomie ... To może być dobrym sposobem, aby skonfigurować ustawienia w swoim standaryzowany plików konfiguracyjnych.

Odpowiedział 09/12/2008 o 16:22
źródło użytkownik

głosy
1

AppSettings / connectionStrings zawsze będzie czytać od aktualnie działającej aplikacji basenie.

Rozumiem przez to:

Jeśli mam A.exektóry posiada klasę DAL.cs. DAL.cs odczytuje ciąg połączenia z config i wraca "abc"jak oczekiwano.

I następnie przenieść DAL.cs do własnego projektu, a tym samym swój własny zespół. Wciąż mogę mieć to nazywamy ciąg połączenia z app.config jednak będę musiał „host” zespół w działającej aplikacji i dodać ciąg połączenia do tej aplikacji app config . Więc utworzyć nowy app.config i określić parametry połączenia "xyz"w nim, gdy działa, to działa zgodnie z oczekiwaniami.

Teraz, jeśli mogę zmienić odniesienia w A.exeprojekcie korzystać z nowego DAL.dll, ciąg połączenia co sądzisz będzie miał? "xyz"? Nie! Będzie używać "abc"jak przedtem, bo to jest jeszcze skonfigurowany w pliku konfiguracyjnym aplikacji dla A.exe.

Wiem, że to działa, bo kiedyś wspólny kod DAL w wielu systemach Windows i aplikacji internetowych.

Jeśli nic z tego nie jest jasne, czy nie pomóc problemu, proszę dać mi znać poprzez komentowanie tej odpowiedzi.

Aktualizacja po komentarzu od OP

Przez „host” mam na myśli aplikację, która dzwoni w sprawie wspólnego kodu. Może to być Windows lub aplikacji Web, w zasadzie to jest kontekst aplikacji.

Trzeba będzie tworzyć wpisy w plikach konfiguracyjnych dla każdej aplikacji, która wykorzystuje wspólny kod. Gdybym zrozumiał swoje pierwotne pytanie (całkiem możliwe, to był długi dzień!) I chcesz scentralizować konfigurację jak dobrze, to musiałaby:

  • Stworzyć jakąś formę scentralizowanego przechowywania (czy to XML DB, cokolwiek).
  • Wzbogać swój wspólny kod, aby mieć wartości domyślne, aby włączyć go do łączenia się z centralnego magazynu.
  • Stamtąd, kod może następnie skonfigurować się, w oparciu o informacje zawarte w sklepie konfiguracji.

Mam nadzieję że to pomoże :)

Odpowiedział 09/12/2008 o 16:14
źródło użytkownik

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