上一篇正说着呢,代码生成器就来了。

1.适用于ABP官网的Startup Template V3.x的包含了登录、用户等页面的MPA应用模板
2.当前view仅支持文本框生成,远期规划根据字段类型生成不同的控件
3.只需要写好Entity,剩下的交给代码生成器,一键生成所有重复代码。
4.基于winform,脱离VS存在,只要有.net framework,什么环境都能运行起来。

下载链接放在最后

使用方法及其简单:

1.按照规则,编写Entity实体类. 规则如下:
1)命名空间统一用复数,类名用单数,方便代码维护
2)如果时String类型字段,需要加一个MaxFieldLengthd的静态int变量,不仅用于code-first生成数据库时使用,也用于DTO字段长度限制,也会在生成视图时自动加上maxlength属性
3)每个字段都要加上FieldDisplay格式的静态String变量,用于dto,view的字段名称显示
4)如果是必填字段,打上Required属性,Entity不需要加DisplayName属性!保持如下干净的状态即可。
5)建议每个entity都加上String类型字段Name,用于模糊查询

using Abp.Domain.Entities.Auditing;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text; namespace Rock.DictBooks
{
[Table("ai_dict_book")]
public class DictBook : FullAuditedEntity<long>
{
public const int MaxDictNameLength = ;
public const int MaxItemNameLength = ;
public const int MaxItemDescLength = ; public const string DictNameDisplay = "字典名称";
public const string ItemNameDisplay = "数据项名称";
public const string ItemDescDisplay = "数据项描述"; [Required]
[StringLength(MaxDictNameLength)]
public string DictName { get; set; }
[Required]
[StringLength(MaxItemNameLength)]
public string ItemName { get; set; }
[StringLength(MaxItemDescLength)]
public string ItemDesc { get; set; }
}
}

2.修改“\src\Rock.EntityFrameworkCore\EntityFrameworkCore\RockDbContext.cs”,新增一行“public DbSet<EntityName> EntityNames { get; set; }”,把其中的ENtityName换成实际的实体名称。

3.并Add-Migration "xxx",Update-Database(做过code-first的都懂)

4..启动代码生成器,设置好实体类文件路径,项目根目录,命名空间(下载模板时的“Choose your project's name”),实体中文面描述,主键类型,点击生成代码

5.修改“\src\Rock.Web.Mvc\Startup\PageNames.cs”,增加一行“ public const string Test = "Test";”,把其中的Test换成实际的页面名称

6.修改\src\Rock.Core\Localization\SourceFiles\Rock-zh-Hans.xml,新增一行“<text name="Default">默认页面</text>”,是为了代码生成器生成的页面中文翻译,这里的Default更改为实际页面名称,下同
7.修改“\src\Rock.Core\Authorization\PermissionNames.cs”,新增一行“ public const string Pages_Default = "Pages.Default";”

8.修改"\src\Rock.Core\Authorization\RockAuthorizationProvider.cs",新增一行“context.CreatePermission(PermissionNames.Pages_Default, L("Default"));”,是为了给新增页面赋予默认权限

9.修改“\src\Rock.Web.Mvc\Startup\RockNavigationProvider.cs”,增加以下代码,加入菜单

                .AddItem(
new MenuItemDefinition(
PageNames.Test,
L("Default"),
url: "Test",
icon: "fas fa-info-circle",
permissionDependency: new SimplePermissionDependency(PermissionNames.Pages_Default)
)
)

这时候编译程序,运行,就可以打开默认模板生成的页面了

V 1.0默认模板只生成基本的增删改查功能,所有内容录入都为文本框,后续版本会根据字段类型生成不同类型的输入框。程序是基于Razor引擎开发的,所以只要你懂Razor语法,tpl文件可以按自己的意思修改,全部放在Template目录下。代码写的比较早,等我整理一下再开源吧。不用T4是因为每个项目都要手动生成,而且还经常进程锁死,很闹心,所以自己弄了个。

P.S. 需要.net framework 4.5.2才能运行

使用方法:解压,运行Winform.exe即可

链接:https://pan.baidu.com/s/1jormHZBRZyPOj3ijLagG_g
提取码:v21l

最新文章

  1. datatable和list的转换
  2. javascript正则表达式
  3. 新特性AAtitti css3 新特性attilax总结titti css
  4. 开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发
  5. UART UVM验证平台平台搭建总结
  6. 【转】不得不看的两次从C++回归C的高手评论C++
  7. PHP程序员必须清楚的问题汇总
  8. Sqlcompletefree
  9. SQL2008 R2 SP3中使用pivot实现行转列
  10. SonarQube代码质量管理平台比较好的搭建和使用资料
  11. ssh框架搭建出现的异常: class com.my.entity.user not found while looking for property: id
  12. redis-cli 通过管道 --pipe 快速导入数据到redis中
  13. 51nod1007-正整数分组(dp)
  14. Sqlserver 数据库定时自动备份
  15. 转载:margin外边距合并问题以及解决方式
  16. 随机指定范围内N个不重复的数
  17. oracle &lt;&gt; 选不出为null的部分
  18. redis 在 Linux下的安装
  19. 《深入理解Elasticsearch》README
  20. 0607am抽象类&amp;接口&amp;析构方法&amp;tostring&amp;小知识点

热门文章

  1. 用了这么多年MySql,这些好习惯你用过哪些
  2. MySQL(9)— 规范数据库设计
  3. ShoneSharp语言(S#)的设计和使用介绍系列(8)— 最炫“公式”风
  4. 你以为只有马云会灌鸡汤?Linux 命令行也会!
  5. LeetCode DFS搜索与回溯专题
  6. Pandas读取文件报错UnicodeDecodeError: &#39;utf-8&#39; codec can&#39;t decode byte 0xb6 in position 0: invalid start byte
  7. Maven快速入门(一)Maven介绍及环境搭建
  8. [CSharp]传一个包含多个属性的对象,只改变其中个别属性值的方法
  9. RabbitMq和ZeroMq
  10. QueryRunner的添加与查询操作