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.
ASP.Net Core项目在Mac上使用Entity Framework Core 2.0进行迁移可能会遇到的一个问题.的更多相关文章
- 创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表
创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表 创建数据模型类(POCO类) 在Models文件夹下添 ...
- .NET Core学习笔记(8)——Entity Framework Core之Database First
曾经我以为再也不会去弄啥Database First,然鹅我错了.这个世界上就是有啪啪打脸和真香的时候.当小伙伴拿着做好的DB表结构和SQL脚本递过来的时候,我知道我没法拒绝.望着他突起的肱二头肌和充 ...
- ASP.NET Core 快速入门(Razor Pages + Entity Framework Core)
引子 自从 2009 年开始在博客园写文章,这是目前我写的最长的一篇文章了. 前前后后,我总共花了 5 天的时间,每天超过 3 小时不间断写作和代码调试.总共有 8 篇文章,每篇 5~6 个小结,总截 ...
- ASP.NET CORE系列【二】使用Entity Framework Core进行增删改查
介绍 EntityFrameworkCore EF core 是一个轻量级的,可扩展的EF的跨平台版本.对于EF而言 EF core 包含许多提升和新特性,同时 EF core 是一个全新的代码库,并 ...
- ASP.NET CORE系列【三】使用Entity Framework Core进行增删改查
身份验证 以前我们熟悉的web.config中配置的form验证,现在没有了.我们来看看在Core里面如何配置: 首先需要NuGet安装一个包:Microsoft.AspNetCore.Authent ...
- .NET Core学习笔记(9)——Entity Framework Core之Code First
上篇我们介绍了怎么通过已有的SQLServer表来创建实体类,本篇我们改用Code First的方式,由C#代码书写的实体类来生成SQLServer表.并且通过简单的Console APP往SQLSe ...
- ASP.NET Core 配置 Entity Framework Core - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 配置 Entity Framework Core - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 配置 Entity Fram ...
- 1、Entity Framework Core 3.1入门教程-概述和准备工作
本文章是根据 微软MVP solenovex(杨旭)老师的视频教程编写而来,再加上自己的一些理解. 视频教程地址:https://www.bilibili.com/video/BV1xa4y1v7rR ...
- .NET 5学习笔记(10)——Entity Framework Core之切换SQLServer和SQLite
上一篇我们梳理了CodeFist的一般流程,本篇我们讨论如何在一套代码中,支持SQL Server和SQLite的切换.同时从本篇开始,我们从.NET Core 3.1 迁移到.NET 5.相信.NE ...
随机推荐
- ios 开发视图界面动态渲染
#import "MyView.h" IB_DESIGNABLE @interface MyView () @property (nonatomic, strong) IBInsp ...
- Python 中关于Random的使用方法
Random 在 Python 中的使用方法: 1.random.random(): 会随机生成0-1之间的小数 例如: 2.random.uniform(min,max): 会随机生成 min - ...
- 派多个订单给一个司机,拒单是同一订单id
问题:多次派单给一个司机,发现多个拒单请求是同一个订单id的. 原因:来单页面是SingleTask, 并且没有重写onNewIntent, 而倒计时结束拒单的时候会弹窗提示,只有点了确认按钮才会把当 ...
- 关于WinCC OA
简介 WinCC OA 的全称是:SIMATIC WinCC Open Architecture,是奥地利ETM公司(ETM professional control GmbH)开发的SCADA软件系 ...
- BZOJ.4145.[AMPPZ2014]The Prices(状压DP)
BZOJ 比较裸的状压DP. 刚开始写麻烦惹... \(f[i][s]\)表示考虑了前\(i\)家商店,所买物品状态为\(s\)的最小花费. 可以写求一遍一定去\(i\)商店的\(f[i]\)(\(f ...
- Android Getting Started
Building Your First App Creating an Android Project 介绍如何Android开发环境,具体是:怎么使用Eclipse工具 Create a Proje ...
- jquery 点击事件切换样式
$('#FatherName').on('click', '.ClassName', function(e){ $('.ClassName').removeClass('active'); $(thi ...
- Java EE 导图
- Flutter 读写本地文件
文档 注意 安装 path_provider 插件后重启f5, 而不是等待热更新 demo import 'dart:io'; import 'dart:async'; import 'package ...
- 矢量图形(vector graphics)和位图图像(bitmap)以及分辨率概念
第一篇:凭心而论.客观地认识矢量图形与位图图像http://www.dzwebs.net/2003.html 学习过物理的人都明白,矢量有大小和方向,而标量只有大小却没有方向: 但是在计算机里面,图形 ...