irc-netcore-api/IRaCIS.Core.Test/模板使用说明

46 lines
3.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

优化背景:
1、之前我们的从数据库自动生成实体对照模型依赖于T4模板,同时T4模板里面的针对对应数据库获取信息的方法是自己写的其实没必要官方有反向生成工具也是用的T4模板现在可以自定义了
2、如果我们想用pgsql orcal mysql按照之前的方法就要针对这些数据库进行适配太麻烦
3、本身不同数据库官方提供了不同反向工程的库利用命令行就可以根据数据库的定义生成实体
Microsoft.EntityFrameworkCore.SqlServer mssql
Npgsql.EntityFrameworkCore.PostgreSQL pgsql
Pomelo.EntityFrameworkCore.MySql mysql
Oracle.EntityFrameworkCore Oracle
4、微软官方针对这些不同的库生成实体的T4模板是一样的而且也提供了自定义模板的功能我们可以在官方模板的基础上进行自定义以适配属于我们项目的实体生成
1继承我们自己的审计基类
2生成的时候过滤Id 以及我们自己的审计字段
3为适配多种数据库自定义指定字符串长度默认长度不用标注特殊长度才标注
4为适配多种数据库自定义精度特性统一处理
程序包管理控制台命令行工具使用:
参数说明:
-o 模型输出目录
-c 指定数据库上下文名字
-d 使用数据注解 不指定默认是fluentAPI
-t 指定要生成的表名
-p 指定项目名字 (包含上下文,并且产生迁移文件的项目)
备注: 因为是从数据库反向生成实体所以会默认生成dbcontext ,每次生成想要的实体后删除指定的名称context即可
针对字符串类型我们避免string字段 数据库存储null string? 数据库才存储null除非有合理的理由这样可以避免代码里面用string 变量总是要判断是否为null
同时在保存数据库实体的时候在赋值审计字段的时候针对string 类型的变量如果当前值是null,设置为""字符串也可以避免实体定义的每个string 变量赋值默认值,有时候会忘记
Scaffold-DbContext "连接字符串" 数据库提供程序包 -Project 项目名称 -OutputDir 输出目录 -Context "生成的上下文名称" -DataAnnotations -Tables 表1, 表2
方式1
Scaffold-DbContext "Server=106.14.89.110,1435;Database=Test_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true" Microsoft.EntityFrameworkCore.SqlServer -Project IRaCIS.Core.Test -OutputDir GenerateContextModelFolder -Context "TempContext" -DataAnnotations -Tables Dictionary, Site
方式2 多个表 -t Subject -t SubjectVisit
dotnet ef dbcontext scaffold "Server=106.14.89.110,1435;Database=Test_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true" Microsoft.EntityFrameworkCore.SqlServer -p IRaCIS.Core.Test -d -o GenerateContextModelFolder -c "TempContext" -t Dictionary -t Site
开发者PowerShell || 程序包管理控制台命令行 使用:
通过Liquid模板生成基础视图模型、服务接口、服务实现基本方法必须先有数据库实体模型否则视图模型无法生成
dotnet run --project IRaCIS.Core.Test -- Dictionary Site
自动脚本方便执行两句脚本:
./IRaCIS.Core.Test/AutoTemplatel.ps1 -Tables Dictionary, Site
如果不能执行ps1脚本管理员设置Set-ExecutionPolicy -ExecutionPolicy RemoteSigned