About this book (Entity Framework in Action,Second edtion)

发布时间 2023-12-27 10:22:23作者: 生活的倒影

Entity Framework in Action,第二版,是关于快速、正确地编写 EF Core 数据库代码,并最终实现优异的性能。为了帮助解决“简单、正确、快速”方面,我提供了许多示例以及大量的提示和技巧。在此过程中,我介绍了 EF Core 的内部工作原理,因为当事情没有按照你认为的方式工作时,这些信息将会非常有帮助。

微软的文档很好,但没有足够的详细示例。在本书中,我尝试对于每项功能都能提供至少一个案例,你经常会在 GitHub 存储库中找到单元测试(有关链接,请参阅“关于代码”部分),它们以多种方式测试功能。有时,阅读单元测试可以比阅读书中的文本更快地传达正在发生的事情,因此请认同单元测试是一种有用的资源。

谁应该读这本书?

Entity Framework Core in Action,第二版,面向以前从未使用过 EF 的软件开发人员和经验丰富的 EF Core 开发人员,以及想知道 EF Core 能够做什么的所有开发人员。本书假设您已经熟悉使用 C# 进行 .NET 开发,并且您至少对关系数据库有所了解。您不需要成为 C# 专家,但如果您不熟悉 C#,您可能会发现某些代码难以阅读,因为我不解释 C#。本书从基本的 EF Core 命令开始,大多数 C# 程序员应该可以访问这些命令,但从第 2 部分开始,随着内容深入了解 EF Core 的功能,主题会变得更加复杂。

本书的组织方式

我试图构建一条从基础开始(第 1 部分),深入细节(第 2 部分),并以有用的工具和技术结束(第 3 部分)的路径。我尽量不假设您会从头到尾阅读本书,尤其是第 2 部分中的参考部分,但至少略读前六章将帮助您理解我在本书后面使用的基础知识。

第 1 部分:入门

  • 第 1 章介绍了 EF Core 和一个超级简单的控制台应用程序,因此您可以看到 EF Core 的所有部分正在运行。我还概述了 EF Core 的工作原理以及您可能喜欢使用它的原因。
  • 第 2 章着眼于查询(从中读取数据)数据库。我介绍了存储在数据库中的数据之间的关系,以及如何使用 EF Core 加载相关数据。
  • 第 3 章继续更改数据库中的数据:添加新数据、更新现有数据以及从数据库中删除数据。
  • 第 4 章介绍了构建使用EF Core 访问数据库的强大业务逻辑的不同方法。业务逻辑是指实现特定于您的应用程序所解决的业务问题的业务规则或工作流的代码。
  • 第 5 章介绍如何构建使用EF Core 的ASP.NET Core 应用程序。它将第 2、3 和 4 章中开发的代码集成在一起以制作 Web 应用程序。本章还会涉及部署 Web 应用程序和访问托管数据库。
  • 第 6 章涵盖了广泛的主题。大多数主题都包含对 EF Core 某个方面的描述,以及在代码中利用该功能的方法。

第 2 部分:深入了解 Entity Framework Core

  • 第 7 章介绍非关系属性的配置——保存值的属性,例如int、string、DateTime 等。
  • 第 8 章介绍了关系的配置——类之间的链接,例如Book 类链接到一个或多个Author 类。它还包括特殊的映射技术,例如将多个类映射到一个表。
  • 第 9 章介绍了使用EF Core 时可以更改数据库结构的所有方法。它还着眼于当您需要更改实时应用程序正在使用的数据库的结构时出现的问题。
  • 第 10 章着眼于高级映射功能以及检测和处理并发冲突的整个领域。
  • 第 11 章深入探讨了 EF Core 的 DbContext 的工作原理,并逐一介绍了应用程序 DbContext 中各种方法和属性的作用。

第 3 部分:在实际应用程序中使用 Entity Framework Core

  • 第 12 章介绍了两种向增强的SaveChanges/SaveChangesAsync 方法发送消息的方法。这两种方法提供了另一种将多个更新合并到一个事务数据库更新中的方法。
  • 第 13 章着眼于将域驱动设计(DDD) 方法应用于通过EF Core 映射到数据库的类。它还描述了第 3 部分 Book App 中使用的另一种架构方法。
  • 第 14 章列出了所有可能影响数据库访问性能的问题并讨论了如何处理这些问题。
  • 第 15 章是一个 EF Core 应用程序性能调优示例。我采用第 1 部分中开发的原始 Book App 显示查询,并应用三个级别的性能调整。
  • 第 16 章使用 Cosmos DB 进一步调优 Book App 的性能,揭示了 Cosmos DB 及其 EF Core 提供程序的优缺点。本章以从一种数据库类型更改为另一种数据库类型时需要执行的操作作为结束。
  • 第 17 章是关于使用 EF Core 的单元测试应用程序的。我还创建了一个 NuGet 包,您可以使用它来帮助您进行自己的单元测试。

附录

  • 附录A 介绍了 EF Core 使用的 LINQ 语言。本附录对不熟悉 LINQ 或想快速复习 LINQ 的人很有用。

关于代码

我觉得只有当我编写了使用该功能或​​特性的代码时,我才真正了解某事,因此您可以使用位于 http://mng.bz/XdlG 的配套 GitHub 存储库。

注意:我强烈建议从上面显示的 GitHub URL 克隆代码。由于目录名称过长,Manning 书页上列出的代码副本在 Part3 分支中存在问题。

这个 repo 包含我在书中展示的应用程序的代码和我运行的单元测试,以确保我在书中所说的是正确的。代码协议有三个分支:

  • master,涵盖本书的第 1 部分(第 1-6 章)
  • Part2,涵盖本书的第 2 部分(第 7-11 章)
  • Part3,涵盖本书的第 3 部分(第 12 至 17 章)

要运行任何应用程序,您应该首先阅读 GitHub 存储库中位于 http://mng.bz/yYjG 的自述文档。每个分支的自述文档包含三个主要部分:

  • 运行示例应用程序需要安装什么,它告诉您运行GitHub 存储库中任何应用程序的开发应用程序、.NET 版本和数据库要求。 (此信息对于每个分支都是相同的。)
  • What you can run in this branch,告诉您可以在所选的GitHub 存储库的分支中运行哪些应用程序。
  • 如何查找和运行单元测试,告诉您单元测试的位置以及运行它们的各种方式。

在学习本书的三个部分时,您可以选择每个 Git 分支来访问专门针对该部分的代码。此外,请注意相关的单元测试,按章节和功能分组。

注意:关于单元测试的第 17 章,我使用了我创建的库。您可以在 https://github.com/JonPSmith/EfCore.TestSupport 找到这个库,它是我为本书第一版创建的 EfCore.TestSupport 库的更新版本,现在使用 EF Core 中可用的新功能5.这个库是一个开源(MIT许可)库,所以你可以在你自己的单元测试中使用名为EfCore.TestSupport(版本5及更高版本)的NuGet包。

代码约定

本书中的代码示例及其输出以固定宽度的字体显示,并且通常附有注释。代码示例有意保持尽可能简单,因为它们不是可以插入到您的代码中的可重用部分。相反,代码示例被精简,以便您可以专注于所说明的原理。

本书包含许多源代码示例,既有带编号的清单,也有内联普通文本的。在这两种情况下,源代码都采用固定宽度的字体格式,以将其与普通文本分开。有时,代码也会以粗体显示,以突出显示与本章之前的步骤相比发生变化的代码,例如当新功能添加到现有代码行时。

在许多情况下,原始源代码已被重新​​格式化;我们添加了换行符并重新设计了缩进以适应书中可用的页面空间。在极少数情况下,即使这些更改也不够,因此一些列表包含行继续标记 (➥)。此外,当文本中描述代码时,源代码中的一些注释已从列表中删除。许多清单都附有代码注释,突出了重要的概念。

本书示例的源代码可从 GitHub 存储库 (http://mng.bz/XdlG) 下载。

在线资源

以下是指向 Microsoft 文档和代码的有用链接:

■ 微软的 EF Core 文档 —— https://docs.microsoft.com/en-us/ef/core/
■ EF Code 代码 —— https://github.com/dotnet/efcore
■ 在 ASP.NET Core 中使用  EF Core —— https://docs.microsoft.com/en-us/aspnet/core/data/
■ Stack Overflow EF Core 标签 [entity-framework-core] —— https://stackoverflow.com