了解 EF Core

已完成

Entity Framework Core (EF Core) 是对象-关系映射程序 (ORM)。 ORM 在代码和数据库中实现的域模型之间提供一个层。 EF Core 是一种数据访问 API,允许使用 .NET 普通旧公共运行时语言 (CLR) 对象 (POCO) 和强类型语言集成查询 (LINQ) 语法与数据库进行交互。

在 EF Core 中,数据库可在 .NET POCO 后面抽象化。 EF Core 处理与基础数据库的直接交互。 使用此 API 时,可以花更少的时间来与数据库之间转换请求以及编写 SQL,从而让你有更多时间专注于重要的业务逻辑。

使用 EF Core,可以:

  • 将数据作为 C# 对象(实体)加载。
  • 通过对实体调用这些方法来添加、修改和删除数据。
  • 将多个数据库表映射到单个 C# 实体。
  • 处理多个用户同时尝试更新同一记录时出现的并发问题。
  • 使用强类型 LINQ (System.Linq) 语法来查询数据库。
  • 访问多种数据库,包括 SQL Server、SQLite、Azure Cosmos DB、PostgreSQL、MySQL 等。
  • 从现有数据库生成域模型。
  • 根据域模型管理数据库架构。
  • 使用单个方法调用提交对相关实体的复杂、深层和/或宽对象图的更改。

查看 EF Core 体系结构

下图描述了 EF Core 的体系结构:

示意图:Entity Framework Core 体系结构中的组件和进程。

DbContext 是表示工作单元的特殊类。 DbContext 提供的方法可用于配置选项、连接字符串、日志记录以及用于将域映射到数据库的模型。

派生自 DbContext 的类:

  • 表示与数据库之间的活动会话。
  • 保存和查询实体的实例。
  • 包括 DbSet<T> 类型的属性,其表示数据库中的表。

EF Core 提供程序将对象图更改转换为 SQL。

数据库提供程序:

  • 是面向特定数据库引擎(例如 SQL Server、Azure Cosmos DB 或 PostgreSQL)的插件库。
  • 将方法调用和 LINQ 查询转换为数据库的本机 SQL 方言。
  • 扩展 EF Core 以启用数据库引擎特有的功能。

管理数据库架构

EF Core 提供两种主要方法来保持 EF Core 模型和数据库架构同步:

  • 迁移(以模型为准)
  • 反向工程(以数据库为准)

若要二者择一,请确定所要依据的是 EF Core 模型还是数据库架构。

迁移

在真实的项目中,数据模型会随着应用功能的实现而变化。 随着新实体的添加和删除,需要相应地更改数据库架构。 EF Core 迁移功能能够对数据库架构进行增量更新,使其与应用程序的数据模型保持同步,同时保留数据库中的现有数据。

引入数据模型更改时,开发人员使用 EF Core 工具添加相应的迁移。 EF Core 将当前模型与前一模型的快照进行比较以确定差异。 将生成用于实现更改的 C# 代码。 可对 C# 文件进行修改以实现自定义行为,或修改为种子数据。 像任何其他源文件一样在项目的源代码管理中对这些文件进行跟踪。

在生成新的迁移后,可通过多种方式将其应用于数据库。 EF Core 将所有应用的迁移记录在一个特殊的历史记录表中。 历史记录表记录了已应用的迁移。

反向工程

反向工程是基于数据库架构搭建实体模型类和 DbContext 类基架的过程。 此方法通常与数据库管理员所管理的现有数据库或共享数据库一起使用。

在下一个单元中,你将通过使用迁移开始操作 EF Core。

知识检测

1.

哪个类为你提供一组基本操作来配置数据库并与之交互?