• 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的时候:

    就会提示有错误, 因为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

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

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

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

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

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

    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命令:

    OK.

  • 相关阅读:
    Nodejs exec和spawn的区别
    VC++每个版本对应的库
    在cmd启动一个win32程序,printf把信息输出到启运它的那个CMD窗口
    window 控制台解决中文乱码
    NW.js 桌面应用程序
    C++ Addon Async 异步机制
    Node bak
    nodejs electron 创建桌面应用
    跨平台桌面程序框架Electron
    js post 下载文件
  • 原文地址:https://www.cnblogs.com/cgzl/p/8651562.html
Copyright © 2020-2023  润新知