在Docker上连接到MySql

我有一个我在Docker上部署的ASP.NET 5 Web API应用程序。 它连接到一个MySql实例,也在Docker上。 我正在使用Entity Framework 6连接到MySql数据库。 我没有直接引用entity framework,但使用内部使用entity framework6的MySql.Data.Entity包。

当我调用API时,我得到这个错误:

无法确定types为“MySql.Data.MySqlClient.MySqlClientFactory”的提供程序工厂的提供程序名称

在docker之外,即在我的Windows机器上,在Visual Studio 2015中,我将web API指向Docker上的MySql实例,并且可以很好地连接。 在docker里面,我得到了上面提到的错误。

什么可能是错的?

提供者名称未被传递。 在ASP.NET 5之前, provider值可以在web.config中的connectionString中设置。 这不再是这种情况,因为连接string只是一个JSON文件中的string值,没有额外的属性。

您需要以编程方式设置它。 这里有一个例子 ,特别是这个部分。

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

我不是ASP.NET的专家,但不是你的问题转化为:

如果我在Windows上运行ASP.NET,一切正常,如果我在Linux上运行它,我会得到一个exception。

我不认为这是一个Docker问题,而是调查Mono上的entity framework对问题/驱动程序的需求。