2013-09-23 77 views
7

Định nghĩa kiểu của nhà cung cấp loại F # thường yêu cầu một biểu thức không đổi, ví dụ: cho nhà cung cấp loại SQL:Nhà cung cấp loại F # và tích hợp liên tục

type dbSchema = SqlDataConnection<"Data Source=MySqlServer;Initial Catalog=MyDatabase;"> 

Tuy nhiên, khi có hành mã để SCM, và tiếp tục có một máy chủ xây dựng làm việc của nó, có thể bạn không muốn sử dụng chuỗi kết nối tương tự, nhưng thay vì chuỗi kết nối của một cơ sở dữ liệu máy chủ SQL được tạo ra từ quá trình xây dựng.

Có giải pháp cho vấn đề này không?

Thật tuyệt vời khi có thể thực hiện công việc này, vì nó sẽ cung cấp kiểm tra thời gian biên dịch mã truy cập cơ sở dữ liệu.

Cập nhật Giải pháp bởi @tomaspetricek đề nghị làm việc rất tốt, nhưng tôi đã có thêm một tên nhà cung cấp cho chuỗi kết nối:

<add name="DbConnectionString" providerName="System.Data.SqlClient" connectionString="Data Source=MySqlServer;Initial Catalog=MyDatabase;"/> 
+0

Sẽ tốt hơn nếu chuỗi đó được lấy từ tệp cấu hình. –

+0

@RobertHarvey Thật vậy, đó là chính xác những gì có thể dễ dàng được thực hiện ;-) –

Trả lời

12

Bạn chắc chắn có thể chỉ định chuỗi kết nối sử dụng một chìa khóa trong một tập tin cấu hình (xem MSDN documentation):

SqlDataConnection<ConnectionStringName="...", ConfigFile="app.config"> 

Nói chung, một nhà cung cấp loại có thể yêu cầu một số biểu hiện thường xuyên, nhưng tôi nghĩ rằng hầu hết những người sử dụng rộng rãi cung cấp một cách cho tránh điều này. Ví dụ: SqlDataConnection có thể đọc cài đặt từ tệp cấu hình, các nhà cung cấp loại F # tiêu chuẩn khác cho phép chỉ định LocalSchemaFile cho phép bạn chỉ định cấu trúc cần thiết cục bộ (ví dụ: *.dbml tệp cho SQL).

F # Nhà cung cấp loại dữ liệu có thể lấy URL đến tệp từ xa, nhưng họ cũng có thể lấy tệp cục bộ. Vì vậy, tôi nghĩ rằng luôn luôn có một cách để xác định thông tin mà không chỉ định một chuỗi kết nối liên tục (vv) - nhưng cảm thấy tự do để hỏi về các nhà cung cấp cụ thể.

+0

Tôi đã cập nhật các câu hỏi với một ví dụ. – spacedoom

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