Asp.Net Core使用Scaffold-DbContext反向项目生成实体类

反向工程

  1. 反向工程是实体类型类和一个基于数据库架构的 DbContext 类的基架的过程
  2. Scaffold-DbContext(数据库上下文脚手架)
    使用Scaffold-DbContext(数据库上下文脚手架)指令生成modelscontext
    脚手架:
    编译器(脚手架)根据程序员制定的规则收成相应的代码,操作数据库(CRUD)
  3. 语法:
    Scaffold-DbContext [-Connection] <String> [-Provider] <String> [-OutputDir <String>] [-Context <String>]
[-Schemas <String>] [-Tables <String>] [-DataAnnotations] [-Force] [-Project <String>]
[-StartupProject <String>] [-Environment <String>] [<CommonParameters>]
  1. 参数说明:
    [-Connection] <String>:数据库连接字符串,将使用此连接字符串来读取数据库架构。
    [-Provider] <String>:第二个参数是提供程序名称。提供程序名称通常是与提供程序的 NuGet 包名称相同,例如:Pomelo.EntityFrameworkCore.MySql、Microsoft.EntityFrameworkCore.SqlServer
    [-OutputDir <String>]:实体类文件存放的目录
    [-Context <String>]:创建到一个单独的目录从实体类型类的基架的 DbContext 类。
    [-Schemas <String>]:用于包含在架构中的每个表
    [-Tables <String>]:指定表,例如:Scaffold-DbContext ... -Tables Artist, Album
    [-DataAnnotations]:保留名称,使用原始数据库名称,仍将修复无效的.NET 标识符和合成的名称,如导航属性仍将遵循.NET 命名约定
    [-Force]:更新模型
    [-Project <String>]:已搭建基架的 DbContext 类名称将用作后缀的数据库的名称上下文默认情况下。 若要指定一个不同,使用-Context
    [-StartupProject <String>]:指定要使用的启动项目。如果省略,则使用解决方案的启动项目
    [-Environment <String>]
    [<CommonParameters>]
  2. 工作原理
    反向工程开始时读取数据库架构。 它将读取有关表、 列、 约束和索引的信息。
    接下来,它使用的架构信息创建 EF Core 模型。 使用表来创建实体类型;使用列来创建属性;和外键用于创建关系。
    最后,该模型用于生成代码。 相应的实体类型的类、 Fluent API 和数据批注已搭建基架以重新创建相同的模型从您的应用程序中。
  3. 无效情况
    有关的信息继承层次结构,固有类型,并表拆分数据库架构中不存在
    些列类型可能不支持通过 EF Core 提供程序
    表没有主键是当前不实施反向工程。
  4. 安装程序集
    –MySQL版本:
    Microsoft.EntityFrameworkCore(不推荐:MySql.Data.EntityFrameworkCore
    Pomelo.EntityFrameworkCore.MySql
    Microsoft.EntityFrameworkCore.Tools
    Microsoft.VisualStudio.Web.CodeGeneration.Design
    –SQLServer版本:
    Microsoft.EntityFrameworkCore
    Microsoft.EntityFrameworkCore.SqlServer
    Microsoft.EntityFrameworkCore.Tools
    Microsoft.VisualStudio.Web.CodeGeneration.Design
  5. 在程序包包管理器控制台 中执行以下语句生成 实体类
    –MySQL版本:
    第一次生成实体类:
    Scaffold-DbContext "Server=127.0.0.1;port=3306;Database=db; User=root;Password=root;" Pomelo.EntityFrameworkCore.MySql -OutputDir Models
    更新实体类:
    Scaffold-DbContext "Server=127.0.0.1;port=3306;Database=db; User=root;Password=root;" Pomelo.EntityFrameworkCore.MySql -OutputDir Models -Force

–SQLServer版本:
第一次生成实体:
Scaffold-DbContext "Server=127.0.0.1;port=3306;Database=db; User=root;Password=root;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
更新实体类:
Scaffold-DbContext "Server=127.0.0.1;port=3306;Database=db; User=root;Password=root;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Force

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值