【问题标题】:Connecting to MySql on Docker在 Docker 上连接到 MySql
【发布时间】:2015-11-05 15:55:35
【问题描述】:

我有一个已部署在 docker 上的 ASP.NET 5 Web API 应用程序。它连接到一个 MySql 实例,也在 docker 上。我正在使用 Entity Framework 6 连接到 MySql 数据库。我没有直接引用实体框架,而是使用内部使用实体框架 6 的 MySql.Data.Entity 包。

当我调用 API 时,我收到此错误:

无法确定“MySql.Data.MySqlClient.MySqlClientFactory”类型的提供者工厂的提供者名称

在 docker 外部,即在我的 windows 机器上,在 Visual Studio 2015 中,我将我的 Web API 指向 docker 上的 MySql 实例,我可以正常连接。在 docker 里面,我得到了上面提到的错误。

可能出了什么问题?

【问题讨论】:

    标签: mysql asp.net-web-api docker asp.net-core dnx


    【解决方案1】:

    未传递提供程序名称。在 ASP.NET 5 之前,provider 值可以在 web.config 中与connectionString 一起设置。现在不再是这种情况,因为连接字符串只是 json 文件中的字符串值,没有额外的属性。

    您需要以编程方式设置它。 Here's an example,特别是这部分;

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

    【讨论】:

    • 谢谢,这是正确的答案。就我而言,我有一个单独的配置类,如下所示: public class MyDbConfiguration : DbConfiguration 我将其更改为 public classes MyDbConfiguration : MySqlEFConfiguration,并且它起作用了。
    【解决方案2】:

    我不是 ASP.NET 方面的专家,但您的问题不是翻译成:

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

    ?

    我认为这不是 Docker 问题,我宁愿调查实体框架在 Mono 上的问题/驱动程序需求。

    【讨论】:

    • 好点。当我按照你提到的路线改变我的调查路线时,我找到了解决方案。谢谢你。我已经接受了斯塔福德·威廉姆斯的回答。
    猜你喜欢
    • 1970-01-01
    • 2019-08-04
    • 2018-10-02
    • 2018-03-29
    • 2019-01-29
    • 2019-11-02
    • 2021-01-02
    • 2021-10-19
    • 1970-01-01
    相关资源
    最近更新 更多