2012-02-22 11 views
6

Mam rozwiązanie z 4/5 projektami.Gdzie powinienem umieścić moje ciągi połączeń dla mojej biblioteki klas i jak mam do nich dostęp?

Mam obecnie ciąg połączenia dla mojego projektu domeny zakodowany na stałe w pliku C#.

Chciałbym umieścić to w web.config lub coś podobnego. Z tego, co czytałem tutaj i gdzie indziej, powinienem przechowywać te ciągi połączeń w konfiguracji sieciowej aplikacji dzwoniącej?

Jeśli tak, to jak mam do niego dostęp?

Kiedy zrobić coś takiego w moim klasy biblioteki:

ConnectionStringSettingsCollection connectionStrings = 
    connectionStringsSection.ConnectionStrings; 

typu lub obszaru nie można znaleźć, jestem brakuje odniesienia czy coś?

+0

Z jakiegoś dziwnego powodu (Microsoft, wiesz) wymagany zestaw nie jest domyślnie odwoływany. Musisz ręcznie dodać odniesienie do zestawu 'System.Configuration' do każdego projektu, który musi go użyć. –

Odpowiedz

4

Istnieje istniejący schemat w schemacie config dla ciągów połączenia.

To idzie pod elementem <configuration>:

<connectionStrings> 
    <add name="example" connectionString="..."/> 
</connectionStrings> 

W kodzie, należy użyć ConfigurationManager do nich dostęp. Aby móc się do niego odwoływać, należy dodać do pliku plik o rozmiarze using System.Configuration; i odwołanie do zestawu System.Configuration.dll do projektu (jeśli jeszcze go tam nie ma).

string conn = ConfigurationManager.ConnectionStrings["example"]; 
+0

ConfigurationManager to dobry wybór, i 2 inne opcje, które pamiętam teraz: Rejestr i plik binarny (używając binarnego formatyzatora), sprawdź to: http: // stackoverflow.com/questions/9375112/przechowywanie-ustawienia-aplikacji-w-folderze-projektu-raczej-niż-appdata/9375425 # 9375425 –

+2

@AmenAyach - ponieważ PO specjalnie pytany o 'web.config', rejestr i pliki binarne nie są tak naprawdę odpowiedni. – Oded

+0

+1 mój zły, którego nie zauważyłem, po prostu patrzyłem na tagi :) –

3

Zdefiniuj z głównej aplikacji i klasy accessin lib

connectionStrings: Dodaj użyciu System.Configuration; add ref: System.Configuration;

ConfigurationManager.ConnectionStrings["key"] 

alternetive

System.Configuration.ConfigurationSettings.AppSettings["key"]) 
+0

jest to tylko wtedy, gdy twój ciąg połączenia jest w "AppSettings", powinien naprawdę być w tagu "ConnectionStrings" dla sieci. pliki konfiguracyjne – musefan

+1

Dlaczego nie korzystać z wbudowanej sekcji 'ConnectionStrings' wyeksponowanej przez' ConfigurationManager'? Użycie 'AppSettings' dla łańcuchów połączeń zostało odradzane od .NET 2.0. – Oded

5

Trzeba dodać odwołanie do System.Configuration w głównym projekcie.

następnie można uzyskać dostęp ciąg połączenia tak ...

System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;//<- last bit for a string version of the full connection string 

ConfigurationManager pozwala także dostęp do wielu innych przydatnych właściwości z pliku web.config (będzie również pracować dla plików app.config)

0

użyj tego wewnątrz kodu.

String sqlDbConn = 
     ConfigurationManager.ConnectionStrings["ApplicationServices"].ToString(); 

nazwa powinna również być określona w konfiguracji sieci;

<connectionStrings> 
<add name="ApplicationServices" 
     connectionString="You database information" 
     /> 

</connectionStrings> 

a także dodać za pomocą System.Configuration; przestrzeń nazw

+1

Wywołanie 'ToString()' jest zbędne. – Oded

Powiązane problemy