2013-09-04 27 views
11

Chúng tôi đã sử dụng khung Entity trong một môi trường sản xuất trong nhiều tháng nay, và chỉ ngày hôm qua bắt đầu để có được lỗi trên một số máy khi truy vấn cơ sở dữ liệu sử dụng lớp con của chúng ta về DbContext:Khung thực thể: "Tên nhà cung cấp" trong chuỗi kết nối bắt buộc - tất cả đột ngột?

"Chuỗi kết nối 'MyConnectionString' trong tập tin cấu hình của ứng dụng không chứa cần providerName thuộc tính"

vấn đề của chúng tôi có thể dễ dàng giải quyết: tôi thêm "providerName="System.Data.SqlClient" đến chuỗi kết nối trong các tập tin cấu hình trên tất cả các d máy chủ và máy trạm được triển khai.

Tuy nhiên, những bí ẩn vẫn là: theo the documentation:

Thuộc tính providerName là tùy chọn và mặc định là "System.Data.SqlClient".

Thậm chí còn bí ẩn hơn là lý do tại sao điều này bắt đầu xảy ra đột ngột và chỉ xuất hiện trên một số máy. Tôi không biết về bất kỳ thay đổi gần đây nào trong phiên bản EF hoặc .NET, bất kỳ phiên bản hoặc thay đổi nhà cung cấp SQL Server nào, hoặc bất kỳ thứ gì. Nhưng tôi nhận ra có một thứ tôi đã bỏ qua.

.NET 4.5 EF 5,0

Bất cứ ai có bất kỳ gợi ý hoặc những hiểu biết?

+0

máy phát triển của tôi bắt đầu để làm điều này với tôi khi tôi cài đặt Trình kết nối MySQL ADO.NET cho một dự án khác ... nhưng MySQL xuất hiện để thêm chính nó vào tệp machine.config. Tôi chỉ giả định chứ không phải là System.Data.SqlClient là mặc định - nó là chính xác hơn để nói nó là tùy chọn nếu chỉ có một cấu hình thực thể khung nhà cung cấp. – dannykay1710

Trả lời

8

Một số kết hợp trình điều khiển nhất định sẽ khiến máy ở trạng thái không rõ ràng nên sử dụng trình điều khiển nào, vì vậy nó yêu cầu tên nhà cung cấp rõ ràng.

Có thể là một số ứng dụng hoặc trình điều khiển riêng biệt khác hoặc bản cập nhật Windows tự động chạy.

Rõ ràng với tên nhà cung cấp không làm hỏng bất cứ điều gì. Bạn nên thêm nó; nó chỉ thêm một vài ký tự trong chuỗi kết nối của bạn. Nó sẽ không bao giờ cần phải thay đổi trong tương lai hay bất cứ điều gì.

khai cập nhật để bạn nên đọc:

<connectionStrings> 
    <add name="<My connection string name>" connectionString="<Connection string proper>" providerName="System.Data.SqlClient" /> 
</connectionStrings> 
+1

Xin chào, xin lỗi vì câu hỏi ngu ngốc. Nhưng chính xác providerName có ý nghĩa gì ở đây? Đó có phải là không gian tên? Nó có đề cập đến một trình điều khiển/DLL cụ thể không? – SteveB

+1

Nhà cung cấp thường giống như người lái xe trong trường hợp này, có. –

2

Bạn có thể sử dụng quá:

providerName="System.Data.EntityClient" 

thì:

<add name="name_here" connectionString="Data Source="pathofdatabase" providerName="System.Data.EntityClient" /> 
Các vấn đề liên quan