首先关于mac上终于有了个功能比较强大的visual studio工具感到无比的兴奋。虽然一直比较懒惰,没有去研究core。昨天突然着手开始使用mac上开发.net core就发现了一些意想不到的问题。也许是microsoft的新东西,资料也不好找,也不算很全,可能有些还没有官网的详细。所以把遇到的各种问题准备一一记录下来。
.net entityframeworkcore dbfirst使用:
1、新建.net core 库文件,将entityframeworkcore必要的包Microsoft.EntityFrameworkCore.Tools加入。另外我使用的是mysql数据库,对应mysql支持的两个比较好用的包也一并加入。Pomelo.EntityFrameworkCore.Mysql、Pomelo.EntityFrameworkCore.Mysql.Design
2、生成过后,点击项目右键弹出终端输入dotnet ef时出现错误。原因和大多数网上windows平台使用一样,需要打开项目文件进行编辑,加入
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
</ItemGroup>
这样一个配置生成即可使用。
同时顺便在<PropertyGroup>中加入
<RuntimeFrameworkVersion>2.0.3</RuntimeFrameworkVersion>
这样一句话(其实我之前一直失败也很多是因为这个地方的原因,这是core sdk运行时的版本)
3、以上都加入保存过后生成,继续使用项目目录终端,输入dotnet ef就可以看到可爱的独角兽了。
4、dbfirst生成代码,数据库我是早设计好了几个表的。在使用命令
dotnet ef dbcontext scaffold "server=localhost;uid=root;pwd=XXX;database=XXX" "Pomelo.EntityFrameworkCore.Mysql" -o Models
(在生成过程中发现,现在Pomelo.EntityFrameworkCore.Mysql已经更新到2.1.1版本,用这样的方法生成一直报错,所以我一直引用的2.0.1包版本生成。暂时没有解决这个问题。)
生成时一直生成不了,报错也是说Microsoft.NetCore.App的报错误。测试过更新.netcore包,修改过之前配置的runtime版本号与现在使用依赖的是同样的均不好使。最后也是在官网找到个办法。
https://www.microsoft.com/net/learn/get-started/macos
从官网下载最新的core SDK,进行安装。安装完成后在进入项目目录终端输入生成命令发现能够成功。
最后总结了一下,其实报错提示的还是很明确,一直都提示的runtime没有找到。但是我一直进入了一个误区。包括我后来新建过一个core mvc项目测试跑起来发现没有问题,一直以为.net core的包环境是没有问题的。直到后来发现在mac上,dbfirst生成是在根目录下寻找对应的.net core包环境,现在官网对应的版本是2.0.6,所以同样的
<RuntimeFrameworkVersion>2.0.6</RuntimeFrameworkVersion>也修改成相同的版本号之后生成,一次解决。为了Dbfirst生成卡了我几个小时,这一下通了无比开心,也是发现了能在mac上开发的乐趣。特意的也来记录一下以免以后又遇到相同问题,或者是在其他平台上使用时能够有个借鉴。