Entity Framework Core in Action

Entityframework Core in action是 Jon P smith 所著的关于Entityframework Core 书籍。原版地址. 是除了官方文档外另一个学习EF Core的不错途径, 书中由浅入深的讲解的EF Core的相关知识。因为没有中文版,所以本人对其进行翻译。 预计每两天一篇更新 PS: 翻译难免限于本人水平有不准确的地方,建议英文水平不错的同学直接查看原版,有不足的地方欢迎指正

第一部分目录导航

关于这本书

本书的目的是让读者掌握如何快速,正确的编写EF Core数据库访问代码,并实现高性能. 围绕着 "快速、正确、性能" 这些方面,我提供了大量的示例,其中包含大量的技巧和技术. 在讲解的过程中,我加入了很多EF Core内部原理的内容,因为当数据库访问代码无法按照预期工作时,这些将会帮助你进行分析. 微软的文档也是学习Entity Framework Core不错的选择,但是它没有提供详细的示例. 在本书中,我尝试为每个功能提供一个示例,你会在Git仓库中找到单元测试代码(参见 "关于代码" 部分的链接). 有时阅读单元测试代码会比书中的内容更容易理解,所以单元测试是一种有用的资源.

本书适合什么样的读者

本书面向的是从未使用过EF和经验丰富的EF6x开发人员,以及想要了解EF Core的人. 本书假设读者已经熟悉C#,Net开发,并且对关系型数据库有所了解, 不要求对C#多太过深入的了解,但是如果你初学C#,可能会发现有些代码难以阅读,因为我不会讲解C#,但我会提供一个关于Linq(语言集成查询)的附录

本书内容是如何组织的

本书的路径是从基础(第1部分)开始,深入理解(第2部分),最后以实用的工具和技术(第3部分)结束
我不会假设读者从头到尾的阅读这本书,但至少略读前5章会帮助读者理解我在书中后面使用到的基础知识

Part 1 : 基础

第1章通过第一个简单的控制台应用介绍EF core,你将看到EF Core的每个部分. 我还概述了EF Core的工作原理以及为什么你会爱上它.

第2章介绍了查询(从数据库中读取数据),我将介绍存储在数据库中的数据之间的关系,以及如何使用EF Core加载相关数据

第3章介绍了更改数据库中的数据: 添加、更新、删除

第4章介绍了如何使用EF Core构建健壮的业务逻辑数据库访问代码,业务逻辑是应用程序解决特定业务问题时所实现的业务规则或工作流代码名称

第5章是关于构建使用EF Core的ASP.Net Core应用程序,它汇总了第2章到第4章的内容创建了一个Web应用程序,我还谈到了部署Web应用程序和访问托管数据库

Part 2 : 深入理解Entity Framework core

第6章介绍了配置非关系属性 -- 包含值(如int、string、DateTime等)的属性

第7章介绍了关系的配置-- 类之间的关系, 例如Book包含一个或多个Author. 还讲解了特殊的映射方式,例如将多个类映射到一个表

第8章介绍了高级映射功能以及检测和处理并发冲突

第9章深入讨论EF Core的DbContext的工作原理,并逐一介绍应用程序的DbContext中各个方法和属性的作用

Part 3 : 在真实的应用程序中使用Entity Framework Core

第10章是工具,模式和技巧的概要,可以让你使用EF Core更快速的开发和使代码更加健壮,我还介绍了如何在领域驱动设计方法中使用EF Core

第11章介绍了使用EF Core时更改数据库结构的所朋方式,它还包括当你更改实时应用程序所使用的数据库结构时出现的问题

第12章列出了所有可能影响数据库访问性能的问题以及如何处理它们

第13章是一个优化EF Core应用程序性能的示例,我使用第1部分中开发的图书应用程序进行三个级别的性能调优

第14章从介绍更改数据库类型时会发生什么开始,然后介绍一种可以提升某些业务应用程序性能的程序架构,最后以访问和修改EF Core的内部服务结束

第15章是关于使用EF Core进行单元测试的应用程序,我还创建了一个nuget包,你可以使用它帮助你进行单元测试

注: 我在书的章节中都添加了有关EF Core2.1特性的注释,这些指出了2.1版在哪些方面相比较EF 2.0有了新选择

关于代码

我觉得,只有编写代码才会真正的对某些功能或特性有深入的理解. 在git仓库中每章甚至章的部分都有一个自己的分支, 仓库地址可以在这里找到 https://github.com/liangshiw/EfCoreInAction (原地址: https://github.com/JonPSmith/EfCoreInAction). 有关更多信息,请参见git仓库Readme的 在哪里找到代码 部分 https://github.com/liangshiw/EfCoreInAction/blob/master/README.md#wheres-the-code (原地址: https://github.com/JonPSmith/EfCoreInAction/blob/master/README.md#wheres-the-code)

注: 第15章内容是关于单元测试的,它有自己的git仓库 https://github.com/liangshiw/EfCore.TestSupport (原地址: https://github.com/JonPSmith/EfCore.TestSupport)
我之所以将它与前14章分开是因为它包含的工具和功能可以帮助你进行单元测试,你还可以将 EfCore.TestSupport 包安装到你的项目中,使用我在15章中描述的功能

编写代码或运行git仓库中的代码,你需要以下内容

开发环境 (我对原文进行了简化)

  • Visual Studio 2017
  • 也可以使用Visual Studio Code,我在每个分支中设置了.vscode目录,可以正确的构建,测试和运行代码
  • .Net Core SDK

注: git仓库太多使用的是.Net Core 2.0,但是我将一些分支更新到了.Net Core 2.1,参见 https://github.com/liangshiw/EfCoreInAction#net-core-21-examples (原地址: https://github.com/JonPSmith/EfCoreInAction#net-core-21-examples)

其他资源

以下是微软文档,EF Core源码和其他有用的资源的链接

01-25 19:18