前言
Entity Framework Core 是适用于 .NET 的新式对象数据库映射器。 它支持 LINQ 查询、更改跟踪、更新和架构迁移。
EF Core 适用于很多数据库,包括 SQL 数据库(本地和 Azure)、SQLite、MySQL、PostgreSQL 和 Azure Cosmos DB。
1. Entity Framework Core反向工程定义
EntityFramework Core 有基于实体类去生成数据库表 和 数据库表生成实体类两种工作机制。反向工程则是其中
的一种是基于数据库架构搭建**实体类型类**和 **DbContext 类基架**的过程
2.实现工作原理
反向工程从读取数据库架构开始。 它会读取有关表、列、约束和索引的信息。
接下来,它将使用架构信息创建 EF Core 模型。 使用表创建实体类型;使用列创建属性;使用外键创建关系。
最后,使用模型生成代码。 为相应实体类型类、Fluent API 和数据注释搭建基架,以便从应用重新创建相同的
模型。
3.准备工作
(1-1)在NuGet包中安装 Microsoft.EntityFrameworkCore.Tools(使用Visual Studio时使用)
(1-2)在NuGet包中安装 Microsoft.EntityFrameworkCore.Design(使用命令行接口CLI时使用)
(2)在NuGet包中安装 Pomelo.EntityFrameworkCore.MySql (根据自己使用的数据库选择不同的插件)
链接: Microsoft.EntityFrameworkCore.Tools
链接: Pomelo.EntityFrameworkCore.MySql
4. 编写命令
EntityFramework Core 可以通过PMC 和CLI两种工具命令来执行命令
**PMC**: Scaffold-DbContext EF Core 包管理控制台命令
**CLI**: dotnet ef dbcontext scaffold .net 命令
样例:[1]包管理控制台 [2]数据库为MySql [3] 使用的连接组件为 Pomelo.EntityFrameworkCore.MySql
Scaffold-DbContext "host=127.0.0.1;port=3306;database=entityframeworktest;userid=root;password=root;" Pomelo.EntityFrameworkCore.MySql -ContextNamespace EntityFramework.Context -Namespace EntityFramework.Models -OutputDir Models
**参数解释:
(1) Scaffold-dbcontext(数据库上下文脚手架)指令来生成models和context
(2) "host=127.0.0.1;port=3306;database=entityframeworktest;userid=root;password=root;"为MySql的连接字符串,如果用别的数据库可以去查对应的数据库连接字符串
(3) "Pomelo.EntityFrameworkCore.MySql " 第二个参数是安装的数据库连接组件的名称,通常要与 NuGet 包名称相同
(4) “-Namespace EntityFramework” 为所有生成类的命名空间
(5) “-ContextNamespace” 仅覆盖 DbContext 类的命名空间
(6) “-OutputDir Models” 为类生成的输出目录
数据库:
Scaffold-DbContext EF Core 包管理控制台命令:
生成出来的类和DbContext 类基架