Logo
Section 1 / 5

根据数据库模式构建模型

学习如何逆向工程数据库模式。

导入

根据数据库模式构建模型

学习如何逆向工程数据库模式。

概述

逆向工程是 EF Core 的一种开发工作流。它涉及从数据库架构生成模型(DbContext 和实体类型)。这也被称为“数据库优先”工作流。当希望数据库架构成为数据真实来源时,应使用逆向工程。

在本课程中,我们将完成以下操作:

  • 从 SQL 文件创建数据库。
  • 从数据库生成模型。

项目中包含 Artists.sql,其中保存了 Artists.db 的数据库结构。下图展示了实体关系图:

注意:本课程中的命令会生成代码和文件。我们可以通过终端使用相应的 Linux 命令(如 ls 查看文件和目录列表、cd 切换目录、cat 查看文件内容)来导航这些文件。同时,还提供了一个 SPA 小部件,可显示包含生成文件的更新后项目。

创建数据库和表

让我们学习如何使用下面的 C# 项目创建数据库和表:

No configuration found for ID: d381f809cdc712432bfe9eaa373da6ac216af74be01162b2eda12d612df2fbd8

要创建数据库,请点击上方的“运行”按钮。然后,在终端中执行以下命令,创建一个名为 Artists.db 的 SQLite 数据库,并打开 SQLite 提示符以进行后续操作:

1sqlite3 output/Artists.db

接下来,我们将从 Artists.sql 读取表创建命令,并使用以下命令将指定的表填充到数据库中:

1.read Artists.sql

最后,使用以下命令退出 SQLite 提示符:

1.quit

注意:Artists.db 数据库位于名为 output 的目录中。

生成模型

我们将使用 dotnet ef dbcontext scaffold 命令从 Artists.db 生成模型。在终端中执行以下命令:

1dotnet ef dbcontext scaffold "data source=output/Artists.db" Microsoft.EntityFrameworkCore.Sqlite --data-annotations --output-dir Entities --context-dir Data

更新后的项目如下:

No configuration found for ID: bbef235cc21fa1b11da5c6c559d2afbf38ca5aad139f8d709ec8301246b2f6a2

注意,项目现在新增了两个目录:Data 和 Entities。这些目录中的文件如下:

  • Data/ArtistsContext.cs
  • Entities/Album.cs
  • Entities/Employee.cs
  • Entities/Studio.cs
  • Entities/Tag.cs

注意:为简化操作,我们在 ArtistsContext.cs 的第 27 行直接包含了数据库连接字符串。

dotnet ef dbcontext scaffold 命令参数说明

下面我们回顾一下 dotnet ef dbcontext scaffold 命令的各个参数。

连接字符串

1"data source=output/Artists.db"

第一个用引号括起来的参数是连接字符串,用于指示 EF Core 读取数据库架构的数据源。

数据库提供程序

1Microsoft.EntityFrameworkCore.Sqlite

第二个参数指定了 EF Core 使用的数据库提供程序。通常与该提供程序的 NuGet 包名称一致。此处我们使用的是 SQLite。

数据注解标志

1--data-annotations

默认情况下,我们使用流畅 API 配置实体类型。--data-annotations 标志表示改用数据注解进行配置。

例如,使用流畅 API 时,可以这样生成 Name 属性:

1entity.Property(e => e.Name) 2 .IsRequired() 3 .HasMaxLength(50);

而使用数据注解时,可以这样生成相同的 Name 属性:

1[Required] 2[StringLength(50)] 3public string Name { get; set; }

输出目录标志

1--output-dir Entities

--output-dir 标志指定了实体类型的输出目录。默认位置是项目根目录。此处我们将其放置在名为 Entities 的目录中。

上下文目录标志

1--context-dir Data

--context-dir 标志指定了 DbContext 类的输出目录。默认位置是项目根目录。此处我们将其放置在名为 Data 的目录中。

入门

审查和修改生成的模型