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

打印 上一主题 下一主题

主题 874|帖子 874|积分 2622

Azure App Service 提供了一个应用内的MySQL,可以供测试、开发使用。
前提条件是需要使用Windows的操作系统。
创建完App Server 之后,只需要在设置下开启 MySQL In App 即可。

在应用中可以从环境变量中获取连接字符串。
  1. var mysqlconnstr = Environment.GetEnvironmentVariable("MYSQLCONNSTR_localdb")
复制代码
但是Azure提供的连接字符串是一些格式:
  1. Database={database};Data Source={host}:{port};User Id={username};Password={password}
复制代码
看起来没有多大的问题,但是如果直接使用,则会抛出错误, Unable to connect to any of the specified MySQL hosts.。
其实正常情况下的连接字符串是如下格式的:
  1. Database={database};Data Source={host},{port};User Id={username};Password={password}
复制代码
这么对比,就看得出问题所在,就是Data Source中,host和port的分隔符的差异。
最快捷的方法只需要吧,:替换成,即可。
  1. mysqlconnstr = mysqlconnstr.Replace(':', ',')
复制代码
或者稍微封装一下:
即可使用
  1. builder.Services.AddDbContext<MySqlDbContext>(options =>
  2. {
  3.     options.UseMySQL(AzureAppServiceMysqlConnectionParser.Parse(mysqlConnstr));
  4. });
复制代码
一些其他的小TIPS:

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

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

光之使者

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表