NutGender快速代码生成工具

联合创作 · 2023-09-28 02:33

NutGender是一个快速代码生成工具,使用简单的配置即可生成多数据库、种子数据、以及基础的增删改查和复杂查询等,可以快速构建API应用。

本工具使用控制台接入,全部过程只需要对JSON配置文件进行简单配置以及几行导入代码,即可生成数据库、种子数据、相关映射类,以及MVC的相关代码。使得初始数据环境可以快速的搭建,并且更方便地在不同机器和环境中移动。

安装引用

  1. Nuget CLI:
dotnet add package NutGender --version 1.0.1.2
  1. PackageReference
<PackageReference Include="NutGender" Version="1.0.1.2" />

接入步骤

  1. 使用控制台程序引导
        public static void Main(string[] args)
        {
            GenderLoadler.Instance.InitConfiguration(); //初始化配置文件
            GenderLoadler.Instance.CreateTableAndSeed();//创建表及相应种子数据
            GenderLoadler.Instance.CreateCSharpCodeAll(); //创建C#代码
            Console.WriteLine("按任意键继续...");
            Console.ReadLine();
        }
  1. 配置文件 默认的配置文件为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()"
        ]
      }
    }

  ]
}
浏览 8
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报