『贴代码』
PasteSpider
PasteApeart
精选作品
优选问答
成长笔记
【本期话题】更多
                                    我们在开发中经常遇到对方的接口请求有频率限制,比如当前接口每秒的请求不能大于100,不能大于1000,对于这样的,我们作为请求方,如何做限定?
                    
贴代码框架PasteApeart之VS2022右键代码生成器插件介绍
尘埃 2024-11-25 2596 130 6
PasteApeart框架中,你只要编写对应的数据的Model,其他AddDto,UpdateDto,ListDto,Dto等交给PasteBuilder即可,一键生成其他的代码,还能自定义配置规则,省时省力!

--------------------------------------------------------------------------------------------------------------

PasteForm的升级版PasteApeart,享受极致简洁的框架的魅力,点击查看文档

--------------------------------------------------------------------------------------------------------------

简介

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


——— 点我访问PasteApeart框架文档 ———

案例源码

案例源码在

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

不定期升级

AllInDto!

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

在这里插入图片描述

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

需求说明

了解了PasteApeart的理念之后,会发现一个数据模型,比如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{

    }
 }

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

配置小技巧

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

更多特性见

贴代码PasteApeart专题介绍

我们下期见!

评论列表
尘埃
代码样式,看自己啊,自己在模板中可以调整的!
怀里
滚动到顶部的功能加一个,每次混动会累死
野的像个王
代码的样式不行啊
尘埃
130 2596 6
快捷注册
用户问答更多
PasteApeart和PasteForm如何选择?
  • 不用选,后面都是PasteApeart,他们其实是一个东西

PasteApeart中有多层级继承的,表单中的字段排列顺序有什么规则?
  • 看版本,PasteApeart.Helper 26.9.2之后,就按照基类前面的顺序了,也符合阅读顺序,当然你可以使用PasteSort再次改变他!

PasteForm,神奇了啊!都说低代码,低代码,那个是对于非开发者来说的,感觉PasteForm就是开发者的低代码啊!只要配置好Model,就有对应的CRUD操作,还带一些逻辑,和生成代码是两码事了!!!问题来了,有什么局限性,或者适用哪些场景?
  • 1.语言吧,这本身只是一个开发思想,其实其他语言也可以用,不过最优雅实现的还是.NET

    2.特别适用于需要表单,表格的系统,所以哪些EMS,CRM,ERP等都合适

    3.扩展,比如这个思想,你也可以应用于C/S,理论上也是可以的

    4.这个主要针对的是管理端,附带UI的CRUD,也就是说对于业务代码,是没影响的!

    5.可能入门会麻烦点,毕竟有接近100个PasteXXXX特性要了解,幸运的是都是Paste开头,官方的也支持,比如MaxLength,Required等!

最新动态
  • 142.****.82 正在查看 文章列表页 !
  • 185.****.13 正在查看 关于PasteSpiderV2版本升级V5版本后,部署的服务会走一遍扩容的说明 !
  • 40.****.3 正在查看 12306班次筛选座位逻辑 !
  • 114.****.237 正在查看 Document:spider !
  • 52.****.208 正在查看 使用Obfuscar混淆(加密)你的程序源码并一键发布! !
  • 218.****.141 正在查看 PasteApeart框架介绍,PasteApeart为啥说是敏佳开发天花板,看这篇就够了 !
  • 216.****.137 正在查看 使用PasteSpider实现CI/CD持续部署,类似Jenkins的功能,让你的2G服务器也可以飞起 !
  • 36.****.7 正在查看 主页pastespider !
  • 122.****.51 正在查看 有哪些高大上的词语,你有没有被虎得一愣一愣得,一起来看看AI的吐槽! !
  • 36.****.208 正在查看 PasteApeart框架介绍,PasteApeart为啥说是敏佳开发天花板,看这篇就够了 !
  • 40.****.40 正在查看 使用Obfuscar混淆(加密)你的程序源码并一键发布! !
欢迎加入QQ讨论群 296245685 [PasteSpider]介绍 [PasteForm]介绍 @2022-2023 PasteCode.cn 版权所有 ICP证 闽ICP备2021013869号-2