EF7不是在EF6上更新,而是完全重写了。它完全支持.NET Core runtime,也就是说以后你可以在Mac或者是Linux机器上使用EF了。
https://github.com/nicholaspei/OrchardNoCMS 我还在调研使用哪个ORM或者Micro ORM。Massive或者Dapper都不太适合,因为他们都依赖于System.Data,所以跨平台是个问题。
目前准备先使用EF作为一个实现,底层是一个很高的抽象接口,以后如果有合适的轻量级ORM,可以再替换。
回到正题,EF7比较大的变化:
a.只支持Code-First或者Code,不再支持图形界面的生成。
b.支持关系型数据库。
c.跨平台。
1.开始安装EF7的包。
按照之前两篇文章介绍的,使用kpm来安装ef7使用Sql Server作为存储的实现(你可以在*inux平台使用EntityFramework.InMemery去存储数据)。
安装完成后,可以看到project.json已经改变。
为了更方便的使用EF,EF团队给我们开发了一个命令包,你可以安装这个命令包来轻松创建数据访问的代码。下面的命令来安装EntityFramework.Commands
2.使用命令来生成代码。
这块儿算是比较酷的,相对于之前版本的.NET,这一点儿算是很好的学习别的语言亮点。
下面我们需要编辑一下project.json来添加一个命令,用来通过ef生成代码。
和k web类似,我们可以通过 k ef来创建DbContent文件和对应的SQL语句。
不过先通过 k ef来看一个神奇的事情:
可以看到k ef对应的有三个子命令,context和migration以及帮助命令。
context命令是无法创建DbContext的,所以需要手动创建一个DbContext,MyDbContext.cs文件。
接下是执行migration命令,使用migration来生成code-first的代码。
执行k ef migration add “initial”命令。
查看代码文件件,可以看到新生成了如下文件:
最后我们需要通过apply子命令,来生成数据库中对应的表:
执行:k ef migration apply
数据库中对应的表自动创建成功:
接下来就可以使用EF进行数据访问了。
3.EF集成到Dependency Injection。。
下面需要做的就是把EF相关的内容注入到.NET5的默认容器中,以方便构造函数注入。
修改project.json如下:
4.修改Controller和添加Views文件夹。
接下来就可以修改Controller和添加Views了。
HomeController文件:
对应的View文件:
最后使用K web运行应用程序:
因为表中没有数据,所以count为0。致此就完成了EF的使用初级教程。
- 5楼散客游
- 没看懂
- Re: dennylo
- @散客游,引用没看懂,+1
- 4楼tollinxu
- 这些功能在之前的版本 中都有, 两点就是跨平台?
- 3楼Dr.Edison
- 最近在看nodejs 看到preject.json 我笑了~~
- Re: Nic Pei
- @Dr.Edison,引用最近在看nodejs 看到preject.json 我笑了~~,从vs2015的模板结构看,以后很可能是.net和nodejs混合编译了。typesript=gt;js
- 2楼节操
- 话说。net core什么时候能运行在linux下面
- Re: Nic Pei
- @节操,引用话说。net core什么时候能运行在linux下面,目测应该得7、8月份了。
- 1楼幻天芒
- 表示一直用不惯EF,哎~
- Re: Nic Pei
- @幻天芒,引用表示一直用不惯EF,哎~,EF只是一个针对.NET 5的ORM实现方式,应该接着会有很多针对.NET 5的ORM出来。