EF Core 使用Azure App Service中的In-App MySQL服务

2023-05-09,,

Azure App Service 提供了一个应用内的MySQL,可以供测试、开发使用。

前提条件是需要使用Windows的操作系统。

创建完App Server 之后,只需要在设置下开启 MySQL In App 即可。

在应用中可以从环境变量中获取连接字符串。

var mysqlconnstr = Environment.GetEnvironmentVariable("MYSQLCONNSTR_localdb")

但是Azure提供的连接字符串是一些格式:

Database={database};Data Source={host}:{port};User Id={username};Password={password}

看起来没有多大的问题,但是如果直接使用,则会抛出错误, Unable to connect to any of the specified MySQL hosts.

其实正常情况下的连接字符串是如下格式的:

Database={database};Data Source={host},{port};User Id={username};Password={password}

这么对比,就看得出问题所在,就是Data Source中,host和port的分隔符的差异。

最快捷的方法只需要吧,:替换成,即可。

mysqlconnstr = mysqlconnstr.Replace(':', ',')

或者稍微封装一下:

即可使用

builder.Services.AddDbContext<MySqlDbContext>(options =>
{
options.UseMySQL(AzureAppServiceMysqlConnectionParser.Parse(mysqlConnstr));
});

一些其他的小TIPS:

    直接点击MySQL In App 页面上的管理链接,可以直接打开 phpMyAdmin,在线管理MySQL数据库

    通过开发工具控制台或者高级工具,在 C:\home\data\mysql\MYSQLCONNSTR_localdb.txt可以获取上面连接字符串的值。


    Announcing Azure App Service MySQL in-app (preview)
    Moving your database to the “MySQL in App” option in Azure

EF Core 使用Azure App Service中的In-App MySQL服务的相关教程结束。

《EF Core 使用Azure App Service中的In-App MySQL服务.doc》

下载本文的Word格式文档,以方便收藏与打印。