在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对问题/驱动程序的需求。
- 与Docker的Asp.Net核心 – 包括重复的“内容”项目
- dotnet运行不会使用bower软件包
- AWS Linux中的ASP.NETexception
- 使用SQL Management Studio连接到Linux(docker)上的SQL Server
- 在Asp.Net Core中使用两个上下文进行数据库迁移(Docker上的SQL Server)
- 在dotnet发布后,在docker映像中找不到Application Insights依赖关系
- 是什么导致这些目录被隐藏?
- 远程debugging.NET核心Linux Docker容器 – “当前源与内置到.dll中的版本不同”
- DotNet构buildCLI在terminal中工作,但不在Docker构build中