NutGender快速代码生成工具
NutGender是一个快速代码生成工具,使用简单的配置即可生成多数据库、种子数据、以及基础的增删改查和复杂查询等,可以快速构建API应用。
本工具使用控制台接入,全部过程只需要对JSON配置文件进行简单配置以及几行导入代码,即可生成数据库、种子数据、相关映射类,以及MVC的相关代码。使得初始数据环境可以快速的搭建,并且更方便地在不同机器和环境中移动。
安装引用
- Nuget CLI:
dotnet add package NutGender --version 1.0.1.2
- PackageReference
<PackageReference Include="NutGender" Version="1.0.1.2" />
接入步骤
- 使用控制台程序引导
public static void Main(string[] args)
{
GenderLoadler.Instance.InitConfiguration(); //初始化配置文件
GenderLoadler.Instance.CreateTableAndSeed();//创建表及相应种子数据
GenderLoadler.Instance.CreateCSharpCodeAll(); //创建C#代码
Console.WriteLine("按任意键继续...");
Console.ReadLine();
}
- 配置文件 默认的配置文件为nutgender.json,您也可以定义多个配置文件,进行批量和条件化地导出,具体参数如下
{
//数据库类型
"SQLType": "mysql",
//连接字符串(不带数据库名)
"ConnectionString": "[你的数据库连接]",
//数据库名
"Schema": "nuttest",
//生成代码配置
"Code": {
//代码命名空间
"Namespace": "NutCode",
//模型映射路径
"ModelPath": "D:\\Code\\Models",
//DAL层代码导出路径
"StoragePath": "D:\\Code\\DAL",
//服务层代码导出路径
"ServicePath": "D:\\Code\\BAL",
//MVC层代码导出路径
"ControllerPath": "D:\\Code\\API",
//自定义查询生成类(VO)路径
"ViewPath": "D:\\Code\\Views"
},
//所有表
"Tables": [
//用户表
{
//表中文名
"CnName": "用户表",
//表英文名
"EnName": "TUser",
//字段
"Fields": [
{
"CnName": "主键",
"EnName": "Id",
"isPrimary": true
},
{
"CnName": "部门Id",
"EnName": "DeptId",
"DbType": "bigint",
"isPrimary": false,
"isNotNull": true
},
{
"CnName": "名称",
"EnName": "Name",
"isPrimary": false,
"isNotNull": true
},
{
"CnName": "年龄",
"EnName": "Age",
"DbType": "int",
"isPrimary": false
},
{
"CnName": "创建时间",
"EnName": "CreateDate",
"DbType": "DateTime",
"isPrimary": false
}
],
//自定义查询接口
"CustomQuery": [
{
"EnName": "SelectDict",
"CnName": "查询字典",
"ParamType": [
[ "@Did", "bigint", "外键部门Id" ] //参数若存在于当前表中,则Gender自动检索类型,不需要定义类型;若不存在于当前表中则需要自定义参数类型,否则代码导出为object
],
"ResultType": "List<?>", //问号代表自动生成的返回类,如果该字段不写则默认返回List<?>
//"Sql": "SELECT u.Name,u.Age,d.Name as DeptName FROM TUser u LEFT JOIN TDept d ON d.Id = u.DeptId Where u.Age = @Age AND d.Id = @DeptId;",
"Sql": "SELECT u.Name,u.Age,d.Name as DeptName FROM TUser u LEFT JOIN TDept d ON d.Id = u.DeptId Where u.Age = @Age AND d.Id = @Did;"
}
],
//种子数据
"Seeds": {
"Keys": "Id,Age,Name,DeptId,CreateDate",
"Vals": [
"guid(),31,'alpha',1,now()",
"guid(),32,ranstr(),1,now()",
"guid(),23,ranstr(),1,now()",
"guid(),26,ranstr(),1,now()",
"guid(),34,'delta',1,now()"
]
}
},
//部门表
{
//表中文名
"CnName": "部门表",
//表英文名
"EnName": "TDept",
//字段
"Fields": [
{
"CnName": "主键",
"EnName": "Id",
"DbType": "bigint",
"isPrimary": true
},
{
"CnName": "部门名",
"EnName": "Name",
"isPrimary": false,
"isNotNull": true
},
{
"CnName": "创建时间",
"EnName": "CreateDate",
"DbType": "DateTime",
"isPrimary": false
}
],
//自定义查询接口
"CustomQuery": [
{
"EnName": "SelectDict",
"CnName": "查询字典",
"Sql": "SELECT Name as Value,Id as Label From TDept;"
}
],
//种子数据
"Seeds": {
"Keys": "Name,CreateDate",
"Vals": [
"'信息部',now()",
"'业务部',now()"
]
}
}
]
}
评论
