教程介绍
关于本书
本书的目的是让读者掌握如何快速,正确的编写EF Core数据库访问代码,并实现高性能。 围绕着 "快速、正确、性能" 这些方面,我提供了大量的示例,其中包含大量的技巧和技术. 在讲解的过程中,我加入了很多EF Core内部原理的内容,因为当数据库访问代码无法按照预期工作时,这些将会帮助你进行分析. 微软的文档也是学习Entity Framework Core不错的选择,但是它没有提供详细的示例. 在本书中,我尝试为每个功能提供一个示例,你会在Git仓库中找到单元测试代码(参见 "关于代码" 部分的链接).有时阅读单元测试代码会比书中的内容更容易理解,所以单元测试是一种有用的资源.
Entity Framework Core, 或者 EF Core,是一个方便软件工程师访问数据库的库。有很多方法来构建这样的一个库,但是EF Core 被设计为一个对象和关系的映射器(也就是我们常说的ORM框架)。ORM是把两个世界的东西映射在一起,一个是关系型数据库自身API,另一个是面向对象世界的类和软件代码。EF Core的优势在于,让软件工程师能够通过代码快速访问数据库。
EF Core,微软发布于2016年,它具有跨平台性:它可以运行在Windows,Linux,mac等操作系统上。它使用EF Core来命名的主要原因,确实是因为他是.NET Core
原创的一部分(但是.NET Core
也可以用于现存的.NET Framework
)。
EF Core, ASP.NET Core
(服务端APP), 和 .NET Core都是开源的,并且都有提供给开发团队交流的活跃的issues页面。 EF Core不是 Entity Framework的第一个版本.现存的大家最为熟知的Entity Framework版本是EF 6.X. EF Core一开始就汲取了Entity Framework 4到6.x多年积累的经验和反馈意见。她保持了和EF 6.x一样接口,但是在底层做了重大改造。比如,它支持非关系性数据库,这在EF 6.x中并没有设计。作为EF5和6.x的用户,我能看到EF Core相对于此前的版本有了提高,同时也看到我喜欢的那些在EF 6.x中的特性在EF Core中还没有(尽管那些特性已经在列入了开发日程)。
本书的目标读者可以是那些从未使用过Entity Framework的开发人员,也可以是那些EF 6.x老手,还可以是那些想了解EF Core 能做什么的人。我假定你们都熟悉.net
和 C#开发,至少对关系型数据库有所了解。但我不假定你们会使用SQL语言(一种用于大多数关系型数据库的语言),因为EF Core能够帮你做太多的事情(不用sql).但是,我会想你展示EF Core生成的SQL,因为它能帮助您理解发生了什么。使用EF的某些高级特性需要有SQL知识,而本书会提供大量的插图来帮助您学习。
本章将通过也小例子来价绍EF Core的使用。这个例子会调用EF Core.你也将会你看到 EF Core是底层是如何翻译软件命令并访问数据库。对EF Core底层原理的概览有助于阅读本书的其余部分。
教程目录
Part1 入门
-
1 EF core介绍
- 1.1 从本书您将学到什么
- 1.2 给现有的EF6.x开发者的一些话
- 1.3 EF Core 概述
- 1.4 关于NoSql
- 1.5 你的第一个EF Core 应用程序
- 1.6 MyFirstEfCoreApp访问的数据库
- 1.7 创建MyFirstEfCoreApp访问的数据库 应用程序
- 1.8 深入探究EF Core
- 1.9 你应该在下个项目中使用EF Core吗?
- 1.10 何时不应该使用EF Core
-
2 从数据库中读取数据
- 2.1 设置一个图书销售网站的场景
- 2.2 创建应用程序的DbContext
- 2.3 理解数据库查询
- 2.4 加载相关数据
- 2.5 使用客户端与服务器评估:将部分查询移动到软件中
- 2.6 构建复杂的查询
- 2.7 添加排序,过滤和分页
- 2.8 把它们放在一起:组合查询对象
-
3 更改数据库中的数据
- 3.1 EF Core 实体状态
- 3.2 向表中添加数据
- 3.3 更新一条数据
- 3.4 处理在更新中的实体间的关系
- 3.5 删除实体
-
4 EF Core构业务逻辑
- 4.1 为什么业务逻辑与其它代码不同
- 4.2 假定业务- 处理书籍订单
- 4.3 使用设计模式帮助实现业务逻辑
- 4.4 实现处理书籍订单的实现逻辑
- 4.5 在图书应用上创建订单
- 4.6 为业务逻辑处理中添加额外的功能
-
5 在
ASP.Net Core
应用程序中使用EF Core
Part2 深入理解Entity Framework core
-
6 配置非关系属性
- 6.1 EF Core配置的三种方式
- 6.2 一个EF Core配置的示例
- 6.3 通过约定配置
- 6.4 通过数据注解配置
- 6.5 通过Fluent API 配置
- 6.6 从数据库排除类和属性
- 6.7 配置模型级别的查询过滤
- 6.8 设置数据库字段类型,大小和可空
- 6.9 主键配置的不同方式
- 6.10 给数据库字段添加索引
- 6.11 配置数据库端命名
- 6.12 使用指定数数据库提供程序Fluent API命令
- 6.13 使用EF Core 配置的建议
- 6.14 影子属性
- 6.15 支持字段——实体类的访问控制
-
7 关系的配置
- 7.1 定义一些关系术语
- 7.2 你需要什么样的导航属性
- 7.3 关系配置
- 7.4 通过约定配置关系
- 7.5 通过数据注解配置关系
- 7.6 Fluent API 关系配置命令
- 7.7 Fluent API 关系中额外的方法
- 7.8 将实体类映射到数据库表的可选方式
-
8 高级映射功能以及检测和处理并发冲突
- 8.1 高级特性——使用带关系的支持字段
- 8.2 DbFunction——EF Core 用户自定义方法
- 8.3 计算字段——一种动态计算值的字段
- 8.4 给数据库字段设置默认值
- 8.5 序列
- 8.6 标记数据库生成属性
- 8.7 并发标记
-
9 深入DbContext
- 9.1 DbContext 概览
- 9.2 理解EF Core是如何跟踪变化的
- 9.3 有关改变实体状态的命令的详细信息
- 9.4 使用ChangeTracker来检测变化
- 9.5 在EF中使用原生sql
- 9.6 使用Context.Model访问EF Core的数据库视图
- 9.7 处理数据库连接问题
Part3 在真实的应用程序中使用EF Core
-
10 EF Core 应用程序中有用的设计模式
-
11 处理数据库迁移
-
12 EF Core 性能调优
-
13 一个优化EF Core应用程序性能的示例
-
14 不同数据库类型和EF Core服务
-
15 EF Core 应用程序的单元测试