2015-11-05 130 views
1

我有一個我在Docker上部署的ASP.NET 5 Web API應用程序。它連接到一個MySql實例,也在docker上。我正在使用Entity Framework 6連接到MySql數據庫。我沒有引用實體框架直接,但我用它內部使用實體框架的MySql.Data.Entity包6在Docker上連接到MySql

當我調用API,我得到這個錯誤:

無法確定供應商名稱類型爲'MySql.Data.MySqlClient.MySqlClientFactory'的提供程序工廠'

外部泊塢窗,即在我的Windows機器上,在Visual Studio 2015中,我將我的Web API指向Docker上的MySql實例,並且我可以只連接精細。在docker裏面,我得到了上面提到的錯誤。

什麼可能是錯的?

回答

2

供應商名稱未被傳遞。在ASP.NET 5之前,可以在web.config中將provider的值與connectionString一起設置。這不再是這種情況,因爲連接字符串只是json文件中的字符串值,沒有額外的屬性。

您需要以編程方式設置它。 Here's an example,特別是這部分;

SetProviderServices("MySql.Data.MySqlClient", new MySqlProviderServices()); 
+0

謝謝,這是正確的答案。就我而言,我有一個單獨的配置類,如下所示: 公共類MyDbConfiguration:DbConfiguration 我改變了對 公共班組長MyDbConfiguration:MySqlEFConfiguration,和它的工作。 – SirG

2

我不是ASP.NET的專家,但沒有你的問題轉化爲:

If I run ASP.NET on Windows everything works fine, if I run it on Linux I get an exception.

我不認爲這是一個Docker問題,寧願調查實體框架對Mono的問題/驅動程序需求。

+0

好點。當我按照您提到的方式改變調查方式時,我找到了解決方案。謝謝。我接受了斯塔福德威廉斯的回答。 – SirG