ASP.Net Core项目在Mac上使用Entity Framework Core 2.0进行迁移可能会遇到的一个问题….

ASP.Net Core项目在Mac上使用Entity Framework Core 2.0进行迁移可能会遇到的一个问题….

大家好,又见面了,我是全栈君。

在ASP.Net Core 2.0的项目里, 我使用Entity Framework Core 2.0 作为ORM.

有人习惯把数据库的连接字符串写在appSettings.json里面, 有的习惯写死在程序里, 有的习惯把它放在launchSettings.json里面(只放在这里的话迁移命令就找不到连接字符串了吧).

我习惯把连接字符串写成系统的环境变量.

我这个项目数据库的连接字符串的变量名是 “MLH:SalesApi:DefaultConnection”, 在windows 10上, 我设置了环境变量, 然后一切cli命令操作都好用.

但是在mac上, 我遇到了问题.

如果我像windows 10那样设置环境变量的名字:

export MLH:SalesApi:DefaultConnection="Server=localhost; Database=SalesApi; User Id=sa; Password=Bx@steel; MultipleActiveResultSets=true"
export MLH:AuthorizationServer:DefaultConnection="Server=localhost; Database=AuthorizationServer; User Id=sa; Password=Bx@steel; MultipleActiveResultSets=true"

那么在运行bash的时候:

ASP.Net Core项目在Mac上使用Entity Framework Core 2.0进行迁移可能会遇到的一个问题....

就会提示有错误, 因为bash并不支持变量名带有冒号 : .

 

1. 在查看了efcore, asp.netcore文档以及搜索so以后, 我找到了第一个差劲的解决办法:

使用env命令, 它会设定环境变量并且之后后边跟着的命令.

然后我就“env 环境变量 dotnet ef命令”:

env MLH:SalesApi:DefaultConnection="Server=localhost; Database=SalesApi; User Id=sa; Password=Bx@steel; MultipleActiveResultSets=true" dotnet ef database update

这个命令的问题是, 设置的这个环境变量只对它后边跟着的命令有效…所以如果想再次迁移的话, 就需要再输入一边这串命令:

ASP.Net Core项目在Mac上使用Entity Framework Core 2.0进行迁移可能会遇到的一个问题....

所以这个办法是不可取的.

 

2. 经过仔细查看文档, 我发现了终极解决办法 (还是文档看的不细): https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/index?tabs=basicconfiguration#configuration-by-environment

ASP.Net Core项目在Mac上使用Entity Framework Core 2.0进行迁移可能会遇到的一个问题....

如果系统不支持环境变量名里面有冒号:, 那么请使用两个下划线代替冒号.

那么就把环境变量名改一下:

export MLH__SalesApi__DefaultConnection="Server=localhost; Database=SalesApi; User Id=sa; Password=Bx@steel; MultipleActiveResultSets=true"
export MLH__AuthorizationServer__DefaultConnection="Server=localhost; Database=AuthorizationServer; User Id=sa; Password=Bx@steel; MultipleActiveResultSets=true"

 

然后关闭bash, 重新开启bash:

执行dotnet ef命令:

ASP.Net Core项目在Mac上使用Entity Framework Core 2.0进行迁移可能会遇到的一个问题....

OK.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107617.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • datagripMac版激活码_通用破解码

    datagripMac版激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    104
  • 网页title图标_php 数据库显示在页面并能修改

    网页title图标_php 数据库显示在页面并能修改在生成的pdf文件的页眉设置logo有以下解决方案重新定义TCPDF中的K_PATH_IMAGES常量(define(‘K_PATH_IMAGES’,xxxx),需要定义在加载tcpdf.php之前)##示例$logo=”xxxx”;//相对地址$pdf->SetHeaderData(PDF_HEADER_LOGO,PDF_HEADER_LOGO_WIDTH,”标题”,…

    2022年9月4日
    2
  • DDR之ODT_ddr3 std

    DDR之ODT_ddr3 std我们知道使用DDRSDRAM的主板上面为了防止数据线终端反射信号需要大量的终结电阻。它大大增加了主板的制造成本。实际上,不同的内存模组对终结电路的要求是不一样的,终结电阻的大小决定了数据线的信号比和反射率,终结电阻小则数据线信号反射低但是信噪比也较低;终结电阻高,则数据线的信噪比高,但是信号反射也会增加。因此主板上的终结电阻并不能非常好的匹配内存模组,还会在一定程度上影响信号品质。DDR2可以根据

    2022年9月9日
    0
  • python-视频声音根据语音识别自动转为带时间的srt字幕文件

    python-视频声音根据语音识别自动转为带时间的srt字幕文件

    2021年5月17日
    284
  • uat测试环境是预生产环境_php开发环境与测试环境

    uat测试环境是预生产环境_php开发环境与测试环境开发环境:开发环境是程序猿们专门用于开发的服务器,配置可以比较随意,为了开发调试方便,一般打开全部错误报告。测试环境:一般是克隆一份生产环境的配置,一个程序在测试环境工作不正常,那么肯定不能把它发布到生产机上。生产环境:是指正式提供对外服务的,一般会关掉错误报告,打开错误日志。可以理解为包含所有的功能的环境,任何项目所使用的环境都以这个为基础,然后根据客户的个性化需求来做调整或者

    2022年9月30日
    0
  • SSM-Spring(1)「建议收藏」

    SSM-Spring(1)「建议收藏」SpringSpring是一个开源的免费的框架Spring是一个轻量级的,非入侵式的框架控制反转(IOC),面向切面编程(AOP)支持事务的处理,对框架整合的支持IOC理论UserDaoUserDaoImpUserSeviceUserServiceImp在之前,用户的需求可能会影响原来的代码。使用一个set。public void setUserDao(UserDao userDao){ this.userDao = userDao;}之前是主动创建对象,控制

    2022年8月9日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号