天天看点

神马玩意,EntityFramework Core 1.1又更新了?走,赶紧去围观前言

哦,不搞SQL了么,当然会继续,周末会继续更新,估计写完还得几十篇,但是我会坚持把SQL更新完毕,绝不会烂尾,后续很长一段时间没更新的话,不要想我,那说明我是学习新的技能去了,那就是学习英语,本来没有打算再探究目前.NET中跨平台的东西,毕竟才出来没多久,还是有很多坑,希望有人踩过再来学习会好很多,可惜项目中都是用的最新的东西,我不得不去探索,于是有关EntityFramework Core的坑就这么出来了,来,我们一起看看。

我们首先还是给出本文需要说到的两个类,博客类(Blog)和文章发表类(Post)。基于每个类都有主键Id,我们定义一个接口。如下:

EF上下文定义如下:

接着在服务中注入EF上下文

搭建了一个基本项目,我们将EF这一层放在StudyEFCore.Data下,实体放在StudyEFCore.Model下。如下:

神马玩意,EntityFramework Core 1.1又更新了?走,赶紧去围观前言

来接下来我们进行迁移看看。我们通过如下命令行来进行:

结果是这样的

神马玩意,EntityFramework Core 1.1又更新了?走,赶紧去围观前言

居然找不到dotnet-ef这个命令,园中已有答案,迁移需要利用添加EF工具包来进行

结果然后当然是可行的,但是Microsoft.EntityFrameworkCore.Tools最新的包是1.0.0-preview4-final,我们将其更新再运行试试。

神马玩意,EntityFramework Core 1.1又更新了?走,赶紧去围观前言

结果令我们大吃一惊,更新到最近版本居然和没添加一样,这是什么情况尼,原来在tools节点下从EF Core 1.1开始现在已经由如下包代替

也就说在tools节点下我们需要添加上述包而非之前的Microsoft.EntityFrameworkCore.Tools包

那么为什么要进行代替尼,EF团队的解释如下:

大意是随着.NET CLI工具设计的完善,现在有必要将donet ef工具单独放在一个包中。接下来我们将上述继续进行修改,将tools节点下替换,而依赖中包修改为最新的包即可【额外说一句上述依赖包中的Microsoft.EntityFremeworkCore.Tools我们也可以用Microsoft.EntityFrameworkCore.Design代替】。结果如下:

神马玩意,EntityFramework Core 1.1又更新了?走,赶紧去围观前言

神马玩意,又出错了,看到错误说明我们才明白过来,当我们在应用程序目录下创建EF时,这个时候肯定是没问题的,如果我们将EF单独作为一个项目来使用,我们在应用程序只是将其作为引用此时它会找不到EF上下文,毕竟迁移它会去查找EF上下文并迁移。此时我们只需要在Startup.cs中在注入EF时明确告诉要执行的命令要将EF迁移文件生成到当前应用程序的程序集下即可,如下:

接下来我们再来看看情况是怎样的,如下:

神马玩意,EntityFramework Core 1.1又更新了?走,赶紧去围观前言

接下来我们再来将模型更新到数据库并生成表。通过如下命令

神马玩意,EntityFramework Core 1.1又更新了?走,赶紧去围观前言

好了到了这里关于EF Core 1.1迁移就告一段落,希望能给看到本文的你不会感觉到上手EF Core会很难,后续有时间会陆续更新EF Core的内容。我们下节再会。