前言

FreeSql 发布至今已经有9个月,功能渐渐完善,自身的生态也逐步形成,早在几个月前写过一篇文章《ORM 开发环境之利器:MVC 中间件 FreeSql.AdminLTE》,您可以先阅读上一篇文章内容了解来龙去脉,再回到这里观看。

我个人非常喜欢小规模团队的"单打独斗",有的时候即使在大公司,也是做着3-5个人团队的小项目,相信不少人有类似的经历。

从上一篇文章可以看出,早先的 FreeSql.AdminLTE 只不过是花瓶,应用场景非常有限,仅仅在开发环境时管理测试数据的用途,这之后的几个月其实我基本没使用它。。。是不是很尴尬??

本次功能升级情况有所改观,且先看完本文内容。

  • 我喜欢已有的管理功能,希望可以在默认产生的功能上进行二次开发;

  • 我喜欢尽量简单,容易上手,二次开发难度别要太大。

说到开源还是先贴上源码仓库吧:https://github.com/2881099/FreeSql.AdminLTE,主项目 FreeSql 目前有900多星,欢迎同时给赞,谢谢!

项目背景

对于通用后台管理系统的生成,除了单纯的对单表 crud 操作外,我还喜欢有外键的操作,比如:

1、Song、Tag 多对多场景,添加/更新 Song 时可以把 Tag 一起保存;

2、列表页,希望外键、多对多出现在过滤筛选条件;

3、列表页,希望枚举出现在过滤筛选条件;

等等诸如此类的繁琐操作,之所以说繁琐,是因为这些工作技术不难,属于严重的重复劳动。

在人员配备苛刻的环境下,选择尽量靠工具提高生产效率,这样我们才有更多的时间在上班摸鱼。。。

既然 ORM 已经对实体进行了配置,利用已存在的条件便利的产生后台管理功能,真是一大快事!!

功能库划分

项目 版本
FreeSql.AdminLTE netstandard2.0、net45
FreeSql.AdminLTE.Tools netcoreapp2.1
FreeSql.AdminLTE.Preview netstandard2.0

三个包产生的 AdminLTE 功能几乎一样,都是根据实体类、导航关系生成默认的繁琐的后台管理功能。

共同的输入条件:

  • 实体类的注释(请开启项目XML文档);
  • 实体类的导航属性配置(可生成繁琐的常用后台管理功能)。

FreeSql.AdminLTE.Preview

.NETCore MVC 中间件,基于 AdminLTE 前端框架动态产生指定 FreeSql 实体的增删查改的【预览管理功能】。

使用场景:开发环境的测试数据生产。

dotnet add package FreeSql.AdminLTE.Preview

public void ConfigureServices(IServiceCollection services)
{services.AddSingleton<IFreeSql>(fsql);
}public void Configure(IApplicationBuilder app)
{app.UseFreeAdminLtePreview("/testadmin/",typeof(TestDemo01.Entitys.Song),typeof(TestDemo01.Entitys.Tag));
}

FreeSql.AdminLTE

根据 FreeSql 实体类配置、导航关系配置,快速生成基于 MVC + Razor + AdminLTE 的后台管理系统的增删查改代码【支持二次开发】。

使用场景:asp.net/asp.netcore 后台管理系统快速生成,二次开发【自定义】。

dotnet add package FreeSql.AdminLTE

using (var gen = new FreeSql.AdminLTE.Generator(new GeneratorOptions()))
{gen.Build("d:/test/", new[] { typeof(TestDemo01.Entitys.Song) }, false);
}

提醒!提醒!提醒!

生成后的 Controller、Razor 代码依赖 FreeSql.DbContext 库,请手工添加

重磅功能:FreeSql.AdminLTE.Tools

什么样的工具更加高效?

命令行。。。命令行。。。命令行。。。必须是它!!!

简单介绍一下Global Tools,它是.NET Core 2.1 中一个初次出现的特性。Global Tools提供了一种方法,让开发人员编写的.NET Core应用可以打包成NuGet包交付。如果.NET Core运行在目标平台上,那么一个恰当打包的Global Tool就可以在那上面运行。JavaScript开发人员可能会发现一件有趣的事,就是这个工具直接借鉴了NPM Global Tools。

FreeSql.AdminLTE.Tools 是对 FreeSql.AdminLTE 功能的工具命令化封装,命令行快速生成代码。

使用场景:asp.netcore 后台管理系统快速生成,二次开发。

dotnet tool install -g FreeSql.AdminLTE.Tools


进入后台项目(可以是空项目、或已存在的项目),执行以下命令

FreeSql.AdminLTE.Tools -Find MyTest.Model..+

命令行参数 说明
-Find * 匹配实体类FullName的正则表达式
-ControllerNameSpace 控制器命名空间(默认:FreeSql.AdminLTE)
-ControllerRouteBase 控制器请求路径前辍(默认:/AdminLTE/)
-ControllerBase 控制器基类(默认:Controller)
-First 是否生成 ApiResult.cs、index.html、htm 静态资源(首次生成)
-Output 输出路径(默认:当前目录)

打开 command 命令行,执行效果如下:

>dotnet tool install -g FreeSql.AdminLTE.Tools
可使用以下命令调用工具: FreeSql.AdminLTE.Tools
已成功安装工具“freesql.adminlte.tools”(版本“0.9.4”)。>FreeSql.AdminLTE.Tools____                   ____         __/ __/  ____ ___  ___   / __/ ___ _  / // _/   / __// -_)/ -_) _\ \  / _ `/ / //_/    /_/   \__/ \__/ /___/  \_, / /_//_/# Github # https://github.com/2881099/FreeSql基于 .NETCore 2.1 环境,在控制台当前目录的项目下,根据实体类生成 AdminLTE 后台管理功能的相关文件。# 生成条件 #1、实体类的注释(请开启项目XML文档);2、实体类的导航属性配置(可生成繁琐的常用后台管理功能)。# 快速开始 #> FreeSql.AdminLTE.Tools -Find MyTest\.Model\..+-Find                  * 匹配实体类FullName的正则表达式-ControllerNameSpace   控制器命名空间(默认:FreeSql.AdminLTE)-ControllerRouteBase   控制器请求路径前辍(默认:/AdminLTE/)-ControllerBase        控制器基类(默认:Controller)-First             是否生成 ApiResult.cs、index.html、htm 静态资源(首次生成)-Output                输出路径(默认:当前目录)# 生成到其他目录 #> FreeSql.AdminLTE.Tools -Find MyTest\.Model\..+ -Output d:/test

演示

1、在桌面创建目录:MyProject

2、打开 cmd,进行 MyProject 目录,win10 下打开 MyProject 目录点击地址栏录入 cmd 可快速打开 cmd,并且目录为当前地址

3、执行 dotnet new webapi

C:\Users\28810\Desktop\MyProject>dotnet new webapi
已成功创建模板“ASP.NET Core Web API”。正在处理创建后操作...
正在 C:\Users\28810\Desktop\MyProject\MyProject.csproj 上运行 "dotnet restore"...正在还原 C:\Users\28810\Desktop\MyProject\MyProject.csproj 的包...正在生成 MSBuild 文件 C:\Users\28810\Desktop\MyProject\obj\MyProject.csproj.nuget.g.props。正在生成 MSBuild 文件 C:\Users\28810\Desktop\MyProject\obj\MyProject.csproj.nuget.g.targets。C:\Users\28810\Desktop\MyProject\MyProject.csproj 的还原在 1.11 sec 内完成。还原成功。

4、执行 dotnet add package FreeSql.Provider.Sqlite

5、执行 dotnet add package FreeSql.DbContext

6、创建几个常用的实体类,点击下载演示的实体类

7、确定项目可以编译通过

C:\Users\28810\Desktop\MyProject>dotnet build
用于 .NET Core 的 Microsoft (R) 生成引擎版本 15.9.20+g88f5fadfbe
版权所有(C) Microsoft Corporation。保留所有权利。C:\Users\28810\Desktop\MyProject\MyProject.csproj 的还原在 65.32 ms 内完成。MyProject -> C:\Users\28810\Desktop\MyProject\bin\Debug\netcoreapp2.2\MyProject.dllMyProject -> C:\Users\28810\Desktop\MyProject\bin\Debug\netcoreapp2.2\MyProject.Views.dll已成功生成。0 个警告0 个错误已用时间 00:00:01.82

8、执行 FreeSql.AdminLTE.Tools -Find MyProject.Model..+ -First

请开启项目 xml 文档生成功能,再执行此操作

9、运行项目,执行 dotnet run

由于这是一个普通 webapi 项目,没有开启静态资源访问,所以请在 Startup.cs 中修改:

public class Startup
{public Startup(){Fsql = new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=|DataDirectory|/test.db;Pooling=true;Max Pool Size=5").UseAutoSyncStructure(true).Build();}public static IFreeSql Fsql { get; private set; }public void ConfigureServices(IServiceCollection services){services.AddSingleton<IFreeSql>(Fsql);services.AddMvc();}public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory){app.UseDeveloperExceptionPage();app.UseMvc();app.UseDefaultFiles();app.UseStaticFiles();}
}

10、打开浏览器访问上一步提示的地址,比如:http://localhost:57844/adminlte/index.html

感悟

不是不喜欢用 vue,其实我会用,精不精通另外说。。只是觉得 vue 小规模作战不够快捷。

FreeSql.AdminLTE.Tools 命令行操作,可快速批量或单个生成实体类 razor + controller 的增删查改方法,该命令暂时无法支持 .net framework 项目,asp.net mvc 项目可以考虑引入 FreeSql.AdminLTE 库自定义代码生成。

FreeSql.AdminLTE 后续可更新的内容很小,感兴趣的小伙伴,可以采用同样的模式做 FreeSql.ElementUI 也不是也可能,对吧?反正有 FreeSql 提供基础保障。

若有使用疑问请留言,谢谢!

github: https://github.com/2881099

转载于:https://www.cnblogs.com/FreeSql/p/11462872.html

[开源] FreeSql.AdminLTE.Tools 根据实体类生成后台管理代码相关推荐

  1. c mysql实体类生成工具_【干货分享】C# 实体类生成工具

    前言: 项目实战中不论是业务编码还是通用编码,总会归纳出一些通用的工具类.放入项目中一劳永逸,让兄弟姐妹们避免编写重复代码.所以利用了工作之余的时间,将这些散落在多个项目中精致优雅的工具类,归纳起来形 ...

  2. java实体类生成mysql表_springboot+mybatis通过实体类自动生成数据库表的方法

    前言 本章介绍使用mybatis结合mysql数据库自动根据实体类生成相关的数据库表. 首先引入相关的pom包我这里使用的是springboot2.1.8.RELEASE的版本 org.mybatis ...

  3. 根据java实体类生成创建表sql步骤

    根据java实体类生成创建表sql步骤 根据java实体类生成创建表sql语句时,方法是利用java反射+AOP注解,主要步骤如下: 1.注解类 一般在生成表的时候,需要表名.主键名.字段名,对应到注 ...

  4. Springboot根据实体类生成数据库表

    springboot数据库(一)-springboot-JPA JPA:springboot -jpa:数据库的一系列的定义数据持久化的标准的体系 学习的目的是: 利用springboot实现对数据库 ...

  5. 根据实体类生成数据库表

    参考文档地址:通过实体类生成数据库表_weixin_44571808的博客-CSDN博客_java实体类生成数据库表 注意springboot版本号需要比较低(没有详细测试2.6不行,2.1.11可以 ...

  6. EntityFramework实体框架—反向工程(实体类生成)

    文章目录 前言 1. Entity Framework Core反向工程定义 2.实现工作原理 3.准备工作 4. 编写命令 前言 Entity Framework Core 是适用于 .NET 的新 ...

  7. CodeDom六--实体类生成示例

    CodeDom这个东西个人觉得知识点不多,前几个续节写的已差不多了.在这节将演示一个CodeDom示例: 数据库实体类的生成.这里先声明在如今的CodeSmith或者是T4模板中实现这些都很简单,并且 ...

  8. velocity笔记(一)什么是velocity,我们什么时候会使用到这个,基本语法,利用模板生成实体类的各层代码

    目录 什么是velocity 应用场景 组成结构 快速入门 总结 基本语法 注释 非解析内容 引用 变量引用 属性引用 方法引用 指令 流程控制指令 #set 指令 #if/#elseif/#else ...

  9. 根据实体类生成持久层、控制层、服务层、实现层

    最近写个java web 程序,用的spring boot.spring data jpa 由于数据库表较多.逆向工程生成的实体类也比较多,重复性工作就很多也很枯燥,今天把重复部分提取出来,用代码自动 ...

最新文章

  1. 使用docker安装mysql服务
  2. MVC基础知识-View
  3. IDEA 导入Weka的Maven依赖jar包
  4. 《Python Enhancement Proposal #8》要点 学习摘录
  5. django migration使用指南
  6. 华中师范大学计算机学院郑,郑年亨-华中师范国家数字化研究中心
  7. IO流(二)__BufferedReader和BufferedWriter
  8. 第八回 新年晚会艺压群芳 文理分科三人聚首[林大帅作品选]
  9. ios swift5 设置PingFangSC字体
  10. 【转载】网络工程师行业的岗位认知
  11. win10专业版激活方法——亲测可行!!!
  12. python中的def是什么意思啊_python的def是什么意思
  13. Maven —— was cached in the local repository, resolution will not be reattempted until the update ...
  14. Android 请求数据时,报错 HttpException:HTTP 503 Service Temporarily Unavailable”
  15. 基于matlab的三相逆变电路仿真,三相逆变电路matlab仿真.docx
  16. 机器学习中的数学——拟牛顿法(Quasi-Newton Methods)
  17. 爱奇艺播放按钮动画解析
  18. js根据日期计算星期几
  19. 安利一波gif录制工具
  20. jquery概要--基础01

热门文章

  1. 【PAT - 甲级1094】The Largest Generation (25分)(dfs建树)
  2. python去除图像光照不均匀_低光照环境下图像增强相关
  3. java整型缓存_JAVA整型包装类的缓存策略
  4. AVR单片机计算器C语言源程序,AVR单片机简单计算器的Proteus仿真实现+源码
  5. java中jsp标准动作_JavaBean和jsp标准动作
  6. Maven Scope取值的含义
  7. 探索 Pexpect
  8. 深度模型压缩论文(03)- Be Your Own Teacher: Improve the Performance of Convolutional Neural Networks via Self
  9. python中object转为float_object格式怎样无损转换成float64格式
  10. C++primer第十章 泛型算法 10.4 再探迭代器 10.5 泛型算法结构