EFCore DbFirst生成代码的两种方式

Entity Framework 6.0以后的版本可用性比较好。EFCore还兼具了跨平台的特性,简要介绍一下可用的三种实现方式:

一、GenMs

此方法使用于Windows平台,Mac平台生成文件时路径有问题

1、安装GenMs/GenPg/GenMy

在终端/命令提示符里输入:

dotnet tool install genmy -g    # 根据mysql库生成
dotnet tool install genms -g    # 根据sqlserver库生成
dotnet tool install genpg -g    # 根据postgresql库生成

2、工具参数说明

        -U    SQLServer账号
        -P    SQLServer密码
        -D    需要生成的数据库

        -N    字符串,生成代码的解决方案名和命名空间
        -S    生成解决方案,在项目第一次生成时使用
        -A    生成后台管理
        -R    下载资源
        
        -O    输出路径(默认:当前目录)

3、创建工程生成代码

genms 127.0.0.1 -U sa -P password -D MyDataBase -N MyEFProject -S -A -R

4、特殊说明

    本人使用Mac系统试用了该命令,生成过程中报错,但也生成了文件,生成的文件名中包含了:“src\..\xxxx”等字样的内容,把目录结构内容也输出到了文件名中。

Windows系统直接使用上述命令可以生成。

Linux未做测试。

二、Scaffold-DbContext / dotnet ef dbcontext scaffold方式

Scaffold-DbContext命令在Core2.0后合至CLI工具中,即dotnet ef dbcontext scaffold

1、安装ef

dotnet install tool -g dotnet-ef

执行上述命令后,即可执行dotnet ef相关命令

2、dotnet ef dbcontext scaffold命令相关参数说明

dotnet ef dbcontext scaffold [arguments] [options]

必要参数:

  <CONNECTION>  连接到DB的连接串

  <PROVIDER>    使用的Provider (例如:Microsoft.EntityFrameworkCore.SqlServer)

 

可选配置:

  -d|--data-annotations                   使用特性(Attribute)来配置模板(如果可行). 如果省略,则只使用fluent API

  -c|--context <NAME>                   指定DbContext的名称

  --context-dir <PATH>                   要放入DbContext文件的目录。路径是相对于项目目录的

  -f|--force                                       覆盖已存在的文件

  -o|--output-dir <PATH>                 存放文件的目录。路径是相对于项目目录的

  --schema <SCHEMA_NAME>...  要为其生成实体类型的表的架构

  -t|--table <TABLE_NAME>...        要为其生成实体类型的表

  --use-database-names                 直接使用数据库中表名和列名

  --json                                            显示Json输出

  -p|--project <PROJECT>              指定使用的工程

  -s|--startup-project <PROJECT>  要使用的启动项

  --framework <FRAMEWORK>     目标Framework

  --configuration <CONFIGURATION>  要使用的配置

  --runtime <RUNTIME_IDENTIFIER>  要使用的RunTime

  --msbuildprojectextensionspath <PATH>  MSBuild项目扩展路径。默认为“obj”

  --no-build                                      不要构建项目(仅当生成是最新的时才使用此选项)

  -h|--help                                         显示帮助信息

  -v|--verbose                                   显示详细输出

  --no-color                                       不给输出着色

  --prefix-output                                带级别的输出前缀

3、生成代码

命令行进入EfModel工程的目录

仅使用必要参数,输入如下命令并修改必要参数:

dotnet ef dbcontext scaffold "user id=YOUR_USERNAME;password=YOUR_PWD;initial catalog=Temp;data source=YOURID_OR_MACHINENAME" Microsoft.EntityFrameworkCore.SqlServer

在当前工程的根目录下生成了对应的DbContext.cs文件与各个Model.cs文件

4、特殊说明

如需使用Scaffold-DbContext命令,需要使用VS的Nuget控制台。
Scaffold-DbContext命令在Core2.0后合至CLI工具中,即dotnet ef dbcontext scaffold

dotnet ef dbcontext scaffold方法跨平台支持良好

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值