文档主页
MySQL Connector/NET 开发人员指南
相关文档 下载本手册

MySQL Connector/NET 开发人员指南  /  ...  /  在 EF Core 中搭建现有数据库的基架

7.2.2 在 EF Core 中搭建现有数据库的基架

搭建数据库基架会从现有数据库生成 Entity Framework 模型。生成的实体将被创建并映射到指定数据库中的表。有关将 EF Core 与 MySQL 一起使用的要求概述,请参阅 表 7.2,“Connector/NET 版本和 Entity Framework Core 支持”)。

NuGet 包能够为项目选择最佳目标,这意味着 NuGet 会安装与该特定框架版本相关的库。

搭建现有数据库基架有两种不同的方法

本节介绍如何使用这两种方法搭建 sakila 数据库的基架。其他搭建基架的技术包括

要求

有关复制每种搭建基架方法所需的组件,请参阅 EF Core 支持的一般要求。使用包管理器控制台方法时,请确定使用哪个版本的 Visual Studio 适合正在使用的 .NET 或 .NET Core 版本(请参阅 表 2.1,“相关产品的 Connector/NET 要求”)。

要下载 sakila 数据库,请参阅 https://dev.mysqlserver.cn/doc/sakila/en/

注意

将 ASP.NET Core 应用程序升级到较新的框架时,请确保使用适当的 EF Core 版本(请参阅 https://docs.microsoft.com/en-us/aspnet/core/migration/30-to-31?view=aspnetcore-3.1)。

使用 .NET Core CLI 搭建数据库基架

  1. 使用 .NET Core 命令行界面 (CLI) 初始化有效的 .NET Core 项目和控制台应用程序,然后切换到新创建的文件夹(sakilaConsole)。

    dotnet new console –o sakilaConsole
    cd sakilaConsole
  2. 使用 CLI 添加 EF Core 的 MySQL NuGet 包。例如,使用以下命令添加 MySQL EF Core 7.0 包,以便与 Connector/NET 8.0.33 及更高版本一起使用。

    dotnet add package MySql.EntityFrameworkCore --version 7.0.2
  3. 添加以下 Microsoft.EntityFrameworkCore.Design Nuget 包

    dotnet add package Microsoft.EntityFrameworkCore.Tools
  4. 如下所示,还原项目文件中指定的依赖项和项目特定工具

    dotnet restore
  5. 通过执行以下命令创建 Entity Framework Core 模型。本示例的连接字符串必须包含 database=sakila。有关使用连接字符串的信息,请参阅 第 4.1 节,“创建 Connector/NET 连接字符串”

    注意

    如果您使用的是早于 Connector/NET 8.0.23 的连接器版本,请将 MySql.EntityFrameworkCore 替换为 MySql.Data.EntityFrameworkCore

    dotnet ef dbcontext scaffold "connection-string" MySql.EntityFrameworkCore -o sakila -f

    要验证模型是否已创建,请打开新的 sakila 文件夹。您应该会看到与映射到实体的所有表相对应的文件。此外,请查找 sakilaContext.cs 文件,其中包含此数据库的 DbContext

在 Visual Studio 中使用包管理器控制台搭建数据库基架

  1. 打开 Visual Studio 并为 C# 创建一个新的 控制台应用 (.NET Core)

  2. 使用 包管理器控制台 添加 EF Core 的 MySQL NuGet 包。例如,使用以下命令添加 MySQL EF Core 7.0 包,以便与 Connector/NET 8.0.33 及更高版本一起使用。

    Install-Package MySql.EntityFrameworkCore -Version 7.0.2
  3. 通过从 工具 菜单中选择 包管理器控制台(或 管理解决方案的 NuGet 包,然后选择 NuGet 包管理器)来安装以下 NuGet 包:Microsoft.EntityFrameworkCore.Tools

  4. 打开 包管理器控制台,并在提示符处输入以下命令,为 sakila 数据库创建实体和 DbContext。本示例的连接字符串必须包含 database=sakila。有关使用连接字符串的信息,请参阅 第 4.1 节,“创建 Connector/NET 连接字符串”

    注意

    如果您使用的是早于 Connector/NET 8.0.23 的连接器版本,请将 MySql.EntityFrameworkCore 替换为 MySql.Data.EntityFrameworkCore

    Scaffold-DbContext "connection-string" MySql.EntityFrameworkCore -OutputDir sakila -f

    Visual Studio 会在项目内部创建一个新的 sakila 文件夹,其中包含映射到实体的所有表以及 sakilaContext.cs 文件。

通过过滤表搭建数据库基架

可以在搭建数据库基架时指定要使用的架构中的确切表,并省略其余表。以下命令行示例显示了过滤表所需的参数。本示例的连接字符串必须包含 database=sakila

如果您使用的是早于 Connector/NET 8.0.23 的连接器版本,请将 MySql.EntityFrameworkCore 替换为 MySql.Data.EntityFrameworkCore

.NET Core CLI

dotnet ef dbcontext scaffold "connection-string" MySql.EntityFrameworkCore -o sakila -t actor -t film -t film_actor -t language -f

Visual Studio 中的包管理器控制台

Scaffold-DbContext "connection-string" MySql.EntityFrameworkCore -OutputDir Sakila -Tables actor,film,language -f

使用多个架构搭建基架

搭建数据库基架时,可以使用多个架构或数据库。请注意,用于连接到 MySQL 服务器的帐户必须有权访问要包含在上下文中的每个架构。

以下命令行示例显示了如何在单个上下文中合并 sakilaworld 架构。如果您使用的是早于 Connector/NET 8.0.23 的连接器版本,请将 MySql.EntityFrameworkCore 替换为 MySql.Data.EntityFrameworkCore

.NET Core CLI

dotnet ef dbcontext scaffold "connection-string" MySql.EntityFrameworkCore -o sakila --schema sakila --schema world -f

Visual Studio 中的包管理器控制台

Scaffold-DbContext "connection-string" MySql.EntityFrameworkCore -OutputDir Sakila -Schemas sakila,world -f