2012-02-22 21 views
6

Tôi có giải pháp với 4/5 dự án.Tôi nên đặt các chuỗi kết nối cho thư viện lớp học của mình ở đâu và cách truy cập chúng?

Tôi hiện có chuỗi kết nối cho dự án miền của mình được mã hóa cứng trong tệp C#.

Tôi muốn đặt điều này trong web.config hoặc một cái gì đó. Từ những gì tôi đã đọc ở đây và ở nơi khác, tôi nên lưu trữ các chuỗi kết nối này trong cấu hình web của ứng dụng gọi điện?

Nếu có thì làm cách nào để truy cập?

Khi tôi làm một cái gì đó như thế này trong thư viện lớp của tôi:

ConnectionStringSettingsCollection connectionStrings = 
    connectionStringsSection.ConnectionStrings; 

Loại hoặc namespace không thể được tìm thấy, tôi thiếu một tham chiếu hoặc một cái gì đó?

+0

Vì một số lý do lạ (Microsoft, bạn biết), hội đồng được yêu cầu không được tham chiếu theo mặc định. Bạn phải tự thêm tham chiếu đến assembly 'System.Configuration' cho mỗi dự án cần sử dụng nó. –

Trả lời

4

Có một lược đồ hiện có trong sơ đồ config cho chuỗi kết nối.

này đi theo yếu tố <configuration>:

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

Trong code của bạn, bạn nên sử dụng ConfigurationManager để truy cập chúng. Để có tham chiếu đến nó, bạn cần phải thêm một không gian tên using System.Configuration; vào tệp của mình và tham chiếu lắp ráp System.Configuration.dll cho dự án của bạn (nếu chưa có).

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

ConfigurationManager là một lựa chọn tốt và 2 lựa chọn khác mà tôi nhớ bây giờ: Registry và tệp nhị phân (sử dụng trình định dạng nhị phân), kiểm tra điều này: http: // stackoverflow.com/questions/9375112/storage-application-settings-in-project-folder-thay-appdata/9375425 # 9375425 –

+2

@AmenAyach - Vì OP được hỏi cụ thể về 'web.config', đăng ký và tệp nhị phân không thực sự thích hợp. – Oded

+0

+1 của tôi xấu tôi đã không nhận thấy, tôi chỉ cần nhìn các thẻ :) –

3

Xác định với ứng dụng và lớp accessin chính của bạn lib

connectionStrings: Thêm bằng System.Configuration; thêm ref: System.Configuration;

ConfigurationManager.ConnectionStrings["key"] 

alternetive

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

điều này chỉ xảy ra nếu chuỗi kết nối của bạn nằm trong "AppSettings", nó thực sự nằm trong thẻ "ConnectionStrings" cho web. config files – musefan

+1

Tại sao không sử dụng phần 'ConnectionStrings' được xây dựng trong phần' ConfigurationManager'? Việc sử dụng 'AppSettings' cho các chuỗi kết nối đã không được khuyến khích kể từ .NET 2.0. – Oded

5

Bạn cần phải thêm một tham chiếu đến System.Configuration trong dự án chính của bạn.

sau đó bạn có thể truy cập vào chuỗi kết nối như thế này ...

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

ConfigurationManager cũng sẽ cho phép bạn truy cập vào một số đặc tính hữu ích khác từ tập tin web.config của bạn (điều này cũng sẽ làm việc cho các tập tin App.config)

0

sử dụng mã này bên trong mã của bạn.

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

tên cũng nên hủy trong cấu hình web của bạn;

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

</connectionStrings> 

và cũng thêm bằng System.Configuration; không gian tên

+1

Cuộc gọi 'ToString()' là dư thừa. – Oded

Các vấn đề liên quan