教程介绍

关于本书

  本书的目的是让读者掌握如何快速,正确的编写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

    • 5.1 Asp.Net Core 简介
    • 5.2 理解图书应用程序的架构
    • 5.3 理解依赖注入
    • 5.4 通过DI使应用程序的DbContext可用
    • 5.5 在Asp.Net Core中调用数据库访问代码
    • 5.6 添加图书清单查询页面
    • 5.7 将数据库方法实现为DI服务
    • 5.8 部署Asp.Net Core 应用程序与数据库
    • 5.9 使用EF Core 迁移更改数据库结构
    • 5.10 使用async/await获取更好的可伸缩性(吞吐量)
    • 5.11 运行并行任务时如何提供DbContext

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 应用程序的单元测试