『PasteSpider』
最新文章
贴代码出品
热门话题
用户问答
lao人言
「搜索」
【本期话题】更多
三人寄语更多
能通过内网IP访问的,尽量不要使用域名访问!
点赞:0
没有最好的语言,只有更合适的语言!
点赞:0
往往会为了一个项目,搭建适合他专属的脚手架!
点赞:1
测试没问题的不一定没问题,测试有问题的那肯定有问题!
点赞:2
时好时坏的结果,往往是多线程引起的逻辑混乱导致的!
点赞:0
需求就是系统的千年杀,相爱相杀那种!
点赞:0
慎用redis的同步我的意见是redis都走异步!!!
点赞:0
时间与空间总是在换来换去,鱼和熊掌往往不可同得!
点赞:0
实际遇到的问题往往在那些视频课程中是不会出现的!
点赞:0
抛开需求谈架构是无意义的事情!
点赞:0
贴代码框架PasteForm之VS2022右键代码生成器插件介绍
尘埃 2024-11-25 172 11 2
PasteForm框架中,你只要编写对应的数据的Model,其他AddDto,UpdateDto,ListDto,Dto等交给PasteBuilder即可,一键生成其他的代码,还能自定义配置规则,省时省力!

简介

PasteForm是贴代码推出的 “新一代CRUD” ,基于ABPvNext,目的是通过对Dto的特性的标注,从而实现管理端的统一UI,借助于配套的PasteBuilder代码生成器,你可以快速的为自己的项目构建后台管理端!目前管理端只有Html+js版本的,后续将支持小程序,Vue等

案例源码

案例源码在

https://gitee.com/pastecode/paste-template

不定期升级

AllInDto!

通过引入PasteForm,一个项目哪怕100个数据表,一般的管理页面也才不到10个,除非有非常多的特殊功能,否则都能用PasteForm中的表格和表单来实现!

在这里插入图片描述

本次的特性介绍,涉及的东西会多一些,你可以下载源码后,看看详细的,我们先来查看下各个特性的信息

需求说明

了解了PasteForm的理念之后,会发现一个数据模型,比如UserInfo,对应的Dto一般有4个
UserInfoAddDto
UserInfoUpdateDto
UserInfoDto
UserInfoListDto
比如说字段UserHead,会出现在上面的4个Dto中,由于特性信息,我们需要在这个UserHead字段上添加特性[PasteImage]
如下片段:

    /// <summary>
    /// 
    /// </summary>
    public class UserInfoAddDto
    {

        ///<summary>
        ///用户名
        ///</summary>
        [MaxLength(32, ErrorMessage = "用户名过长,不能超过32位")]
        [Required(ErrorMessage = "用户名不能为空")]
        public string UserName { get; set; }

        /// <summary>
        /// 用户头像
        /// </summary>
        [MaxLength(128)]
        [PasteImage]
        public string UserHead { get; set; }

        //其他字段

    }
    /// <summary>
    /// 
    /// </summary>
    public class UserInfoDto : EntityDto<int>
    {

        ///<summary>
        ///用户名
        ///</summary>
        [MaxLength(32)]
        public string UserName { get; set; }

        /// <summary>
        /// 用户头像
        /// </summary>
        [MaxLength(128)]
        [PasteImage]
        public string UserHead { get; set; }


        //其他字段

    }
    /// <summary>
    /// 
    /// </summary>
    public class UserInfoListDto : EntityDto<int>
    {

        ///<summary>
        ///用户名
        ///</summary>
        [MaxLength(32)]
        public string UserName { get; set; } = "unknow";
        /// <summary>
        /// 用户头像
        /// </summary>
        [MaxLength(128)]
        [PasteImage]
        public string UserHead { get; set; }

        //其他字段

    }
    /// <summary>
    /// 
    /// </summary>
    public class UserInfoUpdateDto : EntityDto<int>
    {

        ///<summary>
        ///用户名
        ///</summary>
        [MaxLength(32, ErrorMessage = "用户名过长,不能超过32位")]
        [Required(ErrorMessage = "用户名不能为空")]
        public string UserName { get; set; }
        /// <summary>
        /// 用户头像
        /// </summary>
        [MaxLength(128)]
        [PasteImage]
        public string UserHead { get; set; }

        //其他字段
    }

而有时候,比如文章的表ArticleInfo,里面有一个字段body表示文章内容,这个时候我们就希望在ArticleListDto的地方不显示body这个字段,比如CreateDate表示创建时间,这种字段我们希望他不应该出现在AddDto,和UpdateDto字段中!
所以说一个项目中,往往有非常多的表,每个表都有不一样的字段,在生成对应的Dto的时候,如果用手打代码,磨洋工的话将会非常耗时,为此我们提供了PasteBuilder代码生成器!!!
也就是你只要为当前项目修改好config.json配置文件后,写一个数据表对应的数据模型然后右键生成代码,即可生成需要的不同Dto和DDD等的代码,

代码生成器下载

下载地址

https://soft.pastecode.cn/Home/Soft

下载后,解压,双击安装!

案例模板

下载最上面的项目模板,或者是基于项目模板创建新的项目,可以在XXX.Domain下找到文件夹template
这个文件夹的内容是代码生成器相关的配置或者模板文件,注意阅读文件夹下的readme.md文件。
以下以我的项目SmartTool项目为例,打开项目后,在SmartTool.Domain的template文件夹下有config.json文件,内容如下

{
  "readme": "这个是后续支持的,目前处于思路阶段,表示代码生成器的一些配置,比如字段隐藏,字段的属性直接填充等",
  "readme1": "基于配置,最后在带入模板的时候把信息组合好,这样模板页上就只需要处理数据,而不要再进行判断等!",
  "readme2": "ignore配置的是对应的dto中是否不显示这个字段,就是就应的model中是否不显示这个字段,默认字段都是显示的",
  "readme3": "all表示对所有的表都生效,其他的注意是区别大小写的,属性中也区分dto的!!!",
  "readme4": "dto支持5个模式all,add,update,detail,list,其中all表示包含后面的4种",
  "version": "1.0.0",
  "ignore": { //忽略哪些字段?
    "all": {
      "add": [ "CreateDate", "AdminUid", "CreateUid" ],
      "update": [ "UpdateDate", "CreateDate" ],
      "detail": [ "UpdateDate", "CreateDate" ],
      "list": [ "Body", "Content", "Context" ]
    },
    "other": {
      "UserInfo:add": [ "DelColumn" ] //表示表示这个表的这个add模式下,删除这个字段DelColumn
    }
  },
  "attribute": {
    "ignore": [ "Comment", "Display", "Decription", "Index", "DefaultValue", "Column", "NotMapped" ], //表示忽略哪些来自Domain的属性
    "all": {
      "UserId": "[ColumnDataType(\"outer\",\"userInfo\",\"extendUser\",\"id\",\"userName\")]" //表示这个字段UserId需要添加这个过滤器多个之间用::隔开 示例:[PasteLeft]::[PasteHidden]
    },
    "other": {
      "UserInfo:list:userName": "[PasteClass]", //表名称 示例:[PasteClass]::[PasteHidden]
      "*:add:mark": "[PasteClass]"//新版本支持
    }
  }
}

然后我创建一个表model,命名为BuildTestModel(SmartTool.Domain/testmodels文件夹下),代码如下:

namespace SmartTool.testmodels
{
    /// <summary>
    /// 测试表
    /// </summary>
    public class BuildTestModel:Entity<int>
    {

        /// <summary>
        /// 字段1 这个保持默认
        /// </summary>
        public int Vid { get; set; }

        /// <summary>
        /// 字段2 这个要在adddto和updatedto中不显示
        /// </summary>
        public int Create { get; set; }

        /// <summary>
        /// 字段3 这个要配置listdto中不显示
        /// </summary>
        public string Body { get; set; }

        /// <summary>
        /// 字段4 这个要配置[PasteTextarea]
        /// </summary>
        public string Desc { get; set; }

    }
}

针对上面的说明,我们把配置文件修改如下
在这里插入图片描述
配置文件已经修改好了,我们保存后,右键BuildTestModel.cs
在这里插入图片描述
按照上图的,点击二级菜单的最上的选项“完整生成(DTO.EF.API.HTML)”
等待执行完成后,去SmartTool.Application.Contracts下的testmodels文件夹下,可以看到新生成的文件

自动生成的BuildTestModelDto.cs

内容如下:

namespace SmartTool.testmodels
{

    ///<summary>
    ///测试表
    ///</summary>
    public class BuildTestModelAddDto
    {
        ///<summary>
        ///字段1 这个保持默认
        ///</summary>
        public int Vid { get; set; }
        ///<summary>
        ///字段3 这个要配置listdto中不显示
        ///</summary>
        public string Body { get; set; }
        ///<summary>
        ///字段4 这个要配置[PasteTextarea]
        ///</summary>
        [PasteTextarea]
        public string Desc { get; set; }
    }

    ///<summary>
    ///测试表
    ///</summary>
    public class BuildTestModelUpdateDto:EntityDto<int>
    {
        ///<summary>
        ///字段1 这个保持默认
        ///</summary>
        public int Vid { get; set; }

        ///<summary>
        ///字段3 这个要配置listdto中不显示
        ///</summary>
        public string Body { get; set; }

        ///<summary>
        ///字段4 这个要配置[PasteTextarea]
        ///</summary>
        [PasteTextarea]
        public string Desc { get; set; }

    }

    ///<summary>
    ///测试表
    ///</summary>
    public class BuildTestModelDto:EntityDto<int>
    {
        ///<summary>
        ///字段1 这个保持默认
        ///</summary>
        public int Vid { get; set; }

        ///<summary>
        ///字段2 这个要在adddto和updatedto中不显示
        ///</summary>
        public int Create { get; set; }

        ///<summary>
        ///字段3 这个要配置listdto中不显示
        ///</summary>
        public string Body { get; set; }

        ///<summary>
        ///字段4 这个要配置[PasteTextarea]
        ///</summary>
        [PasteTextarea]
        public string Desc { get; set; }

    }

    ///<summary>
    ///测试表
    ///</summary>
    public class BuildTestModelListDto:EntityDto<int>
    {
        ///<summary>
        ///字段1 这个保持默认
        ///</summary>
        public int Vid { get; set; }

        ///<summary>
        ///字段2 这个要在adddto和updatedto中不显示
        ///</summary>
        public int Create { get; set; }

        ///<summary>
        ///字段4 这个要配置[PasteTextarea]
        ///</summary>
        [PasteTextarea]
        public string Desc { get; set; }

    }

    ///<summary>
    /// 查询
    ///</summary>
    public class InputQueryBuildTestModel:InputSearchBase{

    }
 }

看上面的代码,符合配置!

配置小技巧

所以在使用PasteForm的时候,有很多小技巧可以使用的
1.字段名,尽量使用一样的字段名称,这样可以最大程度的利用配置,也减少后续添加特性的时候写错
2.规划好字段,某些字段表示啥意思,比如创建时间,更新时间,可以修改对应的模板文件生成,参考XXX.Domain/template/文件夹下的说明
3.Dto支持多级继承,比如UpdateDto:AddDto,Dto:ListDto:ShortDto等,注意这样的继承最多支持3级,否则在使用PasteForm的时候,文档输出有问题!
4.前期好好规划个个数据库表对应的数据模型,特别是外表等的配置,后续直接生成代码可以节省非常多的时间
5.好好利用代码生成器模板的原理,你甚至可以基于模板原理编写生成VUE,自己的DDD等!

更多特性见

贴代码PasteForm专题介绍

我们下期见!

评论列表
野的像个王
代码的样式不行啊
怀里
滚动到顶部的功能加一个,每次混动会累死
尘埃
11 172 2
快捷注册
热门推荐更多
贴代码文档
贴代码PasteForm框架配套的在线文档,使用者在操作系统的时候只要点击表单字段的名词后面的"?"即可查看对应字段的说明,案例,注意事宜等!;
最新动态
  • 120.****.201 正在查看 PasteSpider之--路由列表-私有仓库-环境配置-的介绍 !
  • 61.****.144 正在查看 PasteSpider更新摘要,持续更新 !
  • 201.****.216 正在查看 PasteForm中,表格的不一样的样式的设定? !
  • 170.****.57 正在查看 Redis的安装 !
  • 99.****.129 正在查看 贴代码框架PasteForm特性介绍之mark(标签,书签,字段说明)的支持 !
  • 189.****.205 正在查看 开发者专用Linux容器部署工具PasteSpider(K8S,Jenkins,CICD)介绍 !
  • 167.****.45 正在查看 贴代码框架PasteForm之特性select,lselect,selects的介绍 !
  • 45.****.97 正在查看 PasteSpider之占位符,宏,对象属性遍历的说明 !
  • 121.****.136 正在查看 贴代码框架PasteForm特性介绍之mark(标签,书签,字段说明)的支持 !
  • 113.****.142 正在查看 Serilog在appsettings.json中的配置 !
  • 135.****.15 正在查看 使用PasteSpider实现CI/CD持续部署,类似Jenkins的功能,让你的2G服务器也可以飞起 !
欢迎加入QQ讨论群 296245685 更新记录 [PasteSpider]介绍 @2022-2023 PasteCode.cn 版权所有 ICP证 闽ICP备2021013869号-2