2012-01-02 33 views
10

Tôi đã viết một assembly trong C# để thực hiện tất cả truy cập dữ liệu cho cơ sở dữ liệu MySQL. Tôi đã sử dụng thành công assembly (một dll được biên dịch) trong ứng dụng desktop C# winform của tôi. Nhưng nó chỉ hoạt động trên các máy tính đã cài đặt "MySQL Connector Net 6.4.4".Lỗi khung thực thể MySQL - Không thể tìm thấy nhà cung cấp cửa hàng được chỉ định trong cấu hình hoặc không hợp lệ

Tôi đã cố gắng sử dụng cùng một hội nghị với dự án trang web asp.net của mình. Trước tiên, tôi gặp lỗi về chuỗi kết nối bị thiếu. Điều này đã được giải quyết dễ dàng bằng cách thêm chuỗi kết nối MySQL vào tệp web.config. Bây giờ tôi nhận được lỗi này (stack theo dõi được liệt kê dưới đây), tôi đã cố gắng thêm dlls sau vào thư mục bin của tôi để giải quyết nó, nhưng nó đã không làm việc.

MySql.Data.dll 
MySql.Data.Entity.dll 
MySql.Web.dll 

System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. 
---> System.ArgumentException: The specified store provider cannot be found in the configuration, or is not valid. 
---> System.ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed. at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) at System.Data.EntityClient.EntityConnection.GetFactory(String providerString) 
--- End of inner exception stack trace 
+0

Liệu chuỗi kết nối có providerName = "System.Data .EntityClient "thuộc tính trong đó? – GemCer

+0

Vâng, tôi vừa kiểm tra chắc chắn. – Hoody

Trả lời

32

Nhưng nó chỉ hoạt động trên máy tính mà đã có "MySQL Connector Net 6.4.4" cài đặt.

Điều đó có nghĩa là bạn đang cố gắng chạy mã trên máy nơi nhà cung cấp chưa được cài đặt? Trong trường hợp này, bạn cũng phải đăng ký nhà cung cấp trong tệp cấu hình của bạn vì cài đặt thêm nó vào machine.config và nếu bạn không cài đặt nó thì nhà cung cấp hiện chưa được đăng ký.

Cố gắng thêm video này vào file web.config của bạn:

<system.data> 
    <DbProviderFactories> 
    <add name="MySQL Data Provider" 
     invariant="MySql.Data.MySqlClient" 
     description=".Net Framework Data Provider for MySQL" 
     type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> 
    </DbProviderFactories> 
</system.data> 
+1

Cảm ơn, tôi sẽ cố gắng tối nay. Để tham khảo trong tương lai cách dễ nhất để tìm chính xác những gì cần thêm vào tệp cấu hình trong các loại kịch bản này là gì? – Hoody

+0

Điều này hoạt động, cảm ơn một lần nữa. – Hoody

+3

Tôi phải xóa "Phiên bản = 6.4.4.0, Văn hóa = trung tính ..." mặc dù MySql.Data.dll của tôi khớp với những đặc điểm chính xác (theo IL Spy) – Pakman

6

tôi thấy tôi có vấn đề này quá khi sử dụng kết nối độc lập NET 6.6.5 cài đặt.

Để giải quyết, chỉ cần gỡ cài đặt trình kết nối .NET độc lập và cài đặt mysql-community-installer, trình cài đặt này cho phép bạn thêm/xóa các tính năng vào MySQL và trong đó một trong các tính năng là trình kết nối .NET có Hỗ trợ Entity Framework.

Khi bạn sử dụng trình kết nối này, tất cả các vấn đề về EF của bạn sẽ biến mất.

+2

yup! điều này cố định nó! –

+0

đã xảy ra sự cố với trình cài đặt cộng đồng MySQL trong đó tải xuống cho bit phòng thu trực quan không bị lỗi.Giải quyết vấn đề này bằng cách tải xuống trình cài đặt 180mb đầy đủ thay vì trình cài đặt 1.5mb. Ở trên sau đó cố định này. – Knightsy

+0

@Greg .... Điều này hoàn toàn làm việc !!!!!! Tôi đã được vào vấn đề này trong gần 2 giờ và giải pháp là để gỡ bỏ cài đặt các kết nối độc lập (trong trường hợp của tôi nó được cung cấp bởi Oracle ..) – atp9

0

Tôi gặp lỗi này (tôi đang sử dụng kết nối mạng 6.4.3) sau khi gỡ cài đặt tất cả các khung .net và cài đặt lại chúng. Việc sửa chữa là để gỡ bỏ cài đặt và cài đặt 6.4.3 6.6.5

3

Thêm này trong web cấu hình

<system.data> 
    <DbProviderFactories> 
     <remove invariant="MySql.Data.MySqlClient" /> 
     <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data" /> 
    </DbProviderFactories> 
    </system.data> 
2

Đối với những người mà đạt câu hỏi cũ này qua Google như tôi đã làm:

Bạn cũng sẽ nhận được lỗi này nếu bạn nâng cấp lên MySQL cho Visual Studio 1.1.3, đây là phiên bản tương thích đầu tiên với Visual Studio 2013, nhưng vẫn sử dụng MySQL Connector 6.6.6, theo như tôi biết là phiên bản cuối cùng tương thích với Entity Framework 4.3.1.

Chúng tôi biết chúng tôi phải nâng cấp lên EF5 (hoặc 6) càng sớm càng tốt, nhưng bây giờ điều này là buộc các thay đổi khi chúng tôi tại một thời gian rất bất tiện ...

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