2015-11-05 119 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

相关问题