脚手架数据库从现有数据库生成实体框架模型。生成的实体被创建并映射到指定数据库中的表。有关将 EF Core 与 MySQL 一起使用的要求的概述,请参阅 表 4.4,“连接器/NET 版本和 Entity Framework Core 支持”)。
NuGet 包能够为项目选择最佳目标,这意味着 NuGet 会安装与该特定框架版本相关的库。
有两种不同的方法来构建现有数据库:
本节介绍如何sakila
使用这两种方法构建数据库。其他脚手架技术是:
有关重现每种脚手架方法所需的组件,请参阅 EF Core 支持的一般要求。使用包管理器控制台方法,确定哪个版本的 Visual Studio 被推荐用于正在使用的 .NET 或 .NET Core 版本(请参阅 表 4.1,“相关产品的连接器/NET 要求”)。
要下载sakila
数据库,请参阅
https://mysql.net.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) 初始化有效的 .NET Core 项目和控制台应用程序,然后切换到新创建的文件夹 (
sakilaConsole
)。dotnet new console –o sakilaConsole
cd sakilaConsole
使用 CLI 为 EF Core 添加 MySQL NuGet 包。例如,使用以下命令添加 MySQL EF Core 6.0 包以与 Connector/NET 8.0.31 及更高版本一起使用。
dotnet add package MySql.EntityFrameworkCore --version 6.0.4
使用以下命令之一添加 MySQL EF Core 5.0 或 EF Core 3.1 包以用于 Connector/NET 8.0.23 及更高版本。
dotnet add package MySql.EntityFrameworkCore --version 5.0.16 dotnet add package MySql.EntityFrameworkCore --version 3.1.24
对于之前版本的Connector/NET,使用以下命令指定包的版本:
dotnet add package MySql.Data.EntityFrameworkCore --version 8.0.22
添加以下
Microsoft.EntityFrameworkCore.Design
Nuget 包:dotnet add package Microsoft.EntityFrameworkCore.Tools
恢复项目文件中指定的依赖项和项目特定工具,如下所示:
dotnet restore
通过执行以下命令创建 Entity Framework Core 模型。此示例的连接字符串必须包含
database=sakila
. 有关使用连接字符串的信息,请参阅 第 4.4.1 节 “创建连接器/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 并为 C# 创建一个新的控制台应用程序 (.NET Core)。
使用包管理器控制台 为 EF Core 添加 MySQL NuGet 包 。例如,使用以下命令添加 MySQL EF Core 6.0 包以使用 Connector/NET 8.0.31 及更高版本。
Install-Package MySql.EntityFrameworkCore -Version 6.0.4
使用以下命令之一添加 MySQL EF Core 5.0 或 EF Core 3.1 包以用于 Connector/NET 8.0.23 及更高版本。
Install-Package MySql.EntityFrameworkCore -Version 5.0.16 Install-Package MySql.EntityFrameworkCore -Version 3.1.24
对于之前版本的Connector/NET,使用以下命令指定包的版本:
Install-Package MySql.Data.EntityFrameworkCore -Version 8.0.22
通过从工具菜单 中选择包管理器控制台(或 管理解决方案的 NuGet 包 ,然后选择NuGet 包管理器)来 安装以下 NuGet 包 : 。
Microsoft.EntityFrameworkCore.Tools
打开包管理器控制台并在提示符下输入以下命令以创建实体和
DbContext
数据库sakila
。此示例的连接字符串必须包含database=sakila
. 有关使用连接字符串的信息,请参阅 第 4.4.1 节 “创建连接器/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 核心命令行界面:
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 服务器的帐户必须有权访问要包含在上下文中的每个模式。
以下命令行示例显示如何将
sakila
和world
架构合并到单个上下文中。如果您使用的连接器版本早于 Connector/NET 8.0.23,请替换
MySql.EntityFrameworkCore
为
MySql.Data.EntityFrameworkCore
.
.NET 核心命令行界面:
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