• .Net Core3.1上用EFCore的反向工程生成


    原文:https://www.cnblogs.com/qidakang/p/11302327.html


    一、简要步骤

    1、第一步

    安装以下程序包

    • 安装Entity FrameWork Core 3.1
    • 安装Entity FrameWork Core SqlServer 3.1
    • 安装Entity FrameWork Core Tools 3.1
    • 安装Entity FrameWork Core Design 3.1

    2、第二步

    选择默认项目为放Model的项目,在程序包管理控制台 输入:

    Scaffold-DbContext '数据库连接字符串' Microsoft.EntityFrameworkCore.SqlServer -o Model -v

    1. -o :表示输出到xxx   Model是生成文件以后所在的文件夹的名字,也可以用''代替会直接生成到项目的根目录。
    2. -v: 表示显示错误信息
    3. -Force :更新表
    4. -Tables 表名 :只操作某张表
    5. -Context :Context类名

    示例:

    Scaffold-DbContext 'Data Source=.;Initial Catalog=MyDB;User ID=sa;Password=sa123' Microsoft.EntityFrameworkCore.SqlServer -o '' -Talbes UserInfo -Force -Context MainDB -v

    提示:微软官网提示 Sql Server版本必须在2012以上。

    二、详细解释

    1.反向工程是实体类型类和一个基于数据库架构的 DbContext 类的基架的过程
    2.Scaffold-DbContext(数据库上下文脚手架)
        使用Scaffold-DbContext(数据库上下文脚手架)指令生成models和context
    2.脚手架:
        编译器(脚手架)根据程序员制定的规则收成相应的代码,操作数据库(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>]

    4.参数说明:
        [-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>]
    5.工作原理
        反向工程开始时读取数据库架构。 它将读取有关表、 列、 约束和索引的信息。
        接下来,它使用的架构信息创建 EF Core 模型。 使用表来创建实体类型;使用列来创建属性;和外键用于创建关系。
        最后,该模型用于生成代码。 相应的实体类型的类、 Fluent API 和数据批注已搭建基架以重新创建相同的模型从您的应用程序中。
    6.无效情况
        有关的信息继承层次结构,固有类型,并表拆分数据库架构中不存在
        些列类型可能不支持通过 EF Core 提供程序
        表没有主键是当前不实施反向工程。
    7.安装程序集
    --MySQL版本:
        MySql.Data.EntityFrameworkCore
        Pomelo.EntityFrameworkCore.MySql
        Microsoft.EntityFrameworkCore.Tools
        Microsoft.VisualStudio.Web.CodeGeneration.Design
    --SQLService版本:
        Microsoft.EntityFrameworkCore
        Microsoft.EntityFrameworkCore.SqlServer
        Microsoft.EntityFrameworkCore.Tools
        Microsoft.VisualStudio.Web.CodeGeneration.Design
    8.在程序包包管理器控制台 中执行以下语句生成 实体类
    --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

    --SQLService版本:
      第一次生成实体:
        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

  • 相关阅读:
    SynchronousQueue、LinkedBlockingQueue、ArrayBlockingQueue性能测试
    JDK源码分析—— ArrayBlockingQueue 和 LinkedBlockingQueue
    ArrayBlockingQueue和LinkedBlockingQueue的区别
    Net处理html页面元素工具类(HtmlAgilityPack.dll)的使用
    WebView混合开发
    对付"反盗链"
    通过代码来操作SQLite的示例
    System.Data.SQLite未能加载文件或程序集
    Using SQLXML Bulk Load in the .NET Environment
    Asynchronous Programming Using Delegates使用委托进行异步编程
  • 原文地址:https://www.cnblogs.com/springsnow/p/13405231.html
Copyright © 2020-2023  润新知