前言

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.dll
MyProject -> 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

[开源] FreeSql.AdminLTE 功能升级的更多相关文章

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

    前言 FreeSql 发布至今已经有9个月,功能渐渐完善,自身的生态也逐步形成,早在几个月前写过一篇文章<ORM 开发环境之利器:MVC 中间件 FreeSql.AdminLTE>,您可以 ...

  2. [开源] FreeSql AOP 功能模块

    前言 FreeSql 是一个功能强大的 .NETStandard 库,用于对象关系映射程序(O/RM),支持 .NETCore 2.1+ 或 .NETFramework 4.6.1+(QQ群:4336 ...

  3. ORM 开发环境之利器:MVC 中间件 FreeSql.AdminLTE

    前言 这是一篇纯技术干货的分享文章,FreeSql 已经基本完成 .NETCore 最方便的 ORM 使命,我们正在筹备生态的建立,比如 ABP 中如何使用 FreeSql 的实现,需要各种各样的扩展 ...

  4. mui 列表项左右滑删除功能升级(仿微信左滑 点击删除后出现确认删除)

    mui 列表项左右滑删除功能升级(仿微信左滑 点击删除后出现确认删除) 2018-06-19更新显示样式

  5. 计图(Jittor) 1.1版本:新增骨干网络、JIT功能升级、支持多卡训练

    计图(Jittor) 1.1版本:新增骨干网络.JIT功能升级.支持多卡训练 深度学习框架-计图(Jittor),Jittor的新版本V1.1上线了.主要变化包括: 增加了大量骨干网络的支持,增强了辅 ...

  6. Twproject Gantt开源甘特图功能扩展

    1.Twproject Gantt甘特图介绍 Twproject Gantt 是一款基于 jQuery 开发的甘特图组件,也可以创建其它图表,例如任务树(Task Trees).内置编辑.缩放和 CS ...

  7. FreeSql 新功能介绍:贪婪加载五种方法

    前言 FreeSql 在经过6个月的开发和朋友们的工作实践,不断的改进创新,目前拥有1500个左右单元测试方法,且每个方法内又复盖不同的测试面. 今天介绍 FreeSql 各种贪婪加载的姿势,作下总结 ...

  8. 微软 Build 2016年开发者大会发布多项功能升级

    微软Build 2016开发者大会在美国旧金山的莫斯康展览中心开幕.本次大会对一些重点功能进行了完善.如手写笔支持技术Windows Ink.语音识别Cortana应用集(Cortana Collec ...

  9. iOS开源项目MobileProject功能点介绍

    一:MobileProject简介 MobileProject项目是一个以MVC模式搭建的开源功能集合,基于Objective-C上面进行编写,意在解决新项目对于常见功能模块的重复开发,MobileP ...

随机推荐

  1. 为 Editor.md 编辑器插件增加预览和发布按钮

    前言 一直在使用 Editor.md 插件作为博客的编辑器,用着挺好,但是在全屏下编辑时,每次想预览或者保存又必须切换到非全屏状态下才可以点击按钮,用着不舒服,所以花了一点时间在工具栏上增加了预览.保 ...

  2. 配置 IDEA 远程连接应用服务器

    当调试 Web 应用时,经常需要使用 ide 远程连接,来进行 debug 调试.使用 Springboot 内置服务器和使用 Tomcat 服务器是常见的应用部署方式,可以用不同的配置方式来启动远程 ...

  3. 一文带你了解Java反射机制

    想要获取更多文章可以访问我的博客 - 代码无止境. 上周上班的时候解决一个需求,需要将一批数据导出到Excel.本来公司的中间件组已经封装好了使用POI生成Excel的工具方法,但是无奈产品的需求里面 ...

  4. T-SQL 小全

    --====================================================== ----数据库概念:创建.删除.使用数据库 ----================= ...

  5. 【JDK】JDK源码分析-LinkedHashMap

    概述 前文「JDK源码分析-HashMap(1)」分析了 HashMap 主要方法的实现原理(其他问题以后分析),本文分析下 LinkedHashMap. 先看一下 LinkedHashMap 的类继 ...

  6. 【iOS】stringWithFormat 保留小数点位数 float double

    以前就见过,如下: text = [NSString stringWithFormat:@"%.1f", percentageCompleted]; 但一直没在意.刚一时好奇,查了 ...

  7. 【iOS】NSString rangeOfString

    今天遇到了 NSString 的 rangeOfString 方法,刚遇到的时候不知道什么作用, 网上找到了一篇文章,介绍得挺简洁,代码如下: NSString *str1 = @"can ...

  8. JAVA-Spring AOP五大通知类型

    一.前置通知 在目标方法执行之前执行的通知 在前置通知方法,可以没有参数,也可以额外接收一个JoinPoint,Spring会自动将该对象传入,代表当前的连接点,通过该对象可以获取目标对象和目标方法相 ...

  9. Hadoop 系列(一)—— 分布式文件系统 HDFS

    一.介绍 HDFS (Hadoop Distributed File System)是 Hadoop 下的分布式文件系统,具有高容错.高吞吐量等特性,可以部署在低成本的硬件上. 二.HDFS 设计原理 ...

  10. 7.4 元组tuple类型内置方法

    元组tuple 元组相当于不可变的列表,在定义完成后后面就不可以进行更改,因此元组只可取不可存 因为不可变,所以相对列表来说,他的功能也少了很多,所以,不难理解,他有个优点就是占用内存小. 作用:能够 ...