前言

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. linux初学者-系统日志(二)

    linux初学者-系统日志(二) 先前在(一)中介绍到在不同主机间日志同步的方法,在一台主机上可以看到另一台主机的日志.这里会介绍系统日志方面的一些其他内容. 1.日志的采集格式 在日志的采集中,由图 ...

  2. go mod 无法自动下载依赖包的问题

    go 11以后启用了go mod功能,用于管理依赖包. 当执行go mod init生成go.mod文件之后,golang在运行.编译项目的时候,都会检查依赖并下载依赖包. 在启动了go mod之后, ...

  3. bean的创建(五)第四部分 bean构造器的查找

    前面分析了bean的静态工厂查找 bean的构造器查找过程和bean的静态工厂查找类似 protected BeanWrapper createBeanInstance(String beanName ...

  4. PHP xdebug API接口优化揪出了getimagesize这个鬼

    在API优化list中,公司客户系统的服务号客服有个获取聊天消息的接口getHistory请求时间很长,就去优化了下,记下过程. 一,配置环境,追踪使用Xdebug: 1.在https://xdebu ...

  5. 改MySQL的编码方式,解决jdbc MySQL中文乱码问题

    进MySQL安装目录,打开my.ini 这两个地方改成gbk 重启服务

  6. basic

    vmware三种网络类型 bridged(桥接)通过物理主机网卡架设桥,从而连入实际网络,最接近正式网络环境 NAT(地址转换)虚拟机通过宿主机转发地址上网,宿主机ip更改虚拟机不需要改.过程:虚拟机 ...

  7. Go“一个包含nil指针的接口不是nil接口”踩坑

    最近在项目中踩了一个深坑--"Golang中一个包含nil指针的接口不是nil接口",总结下分享出来,如果你不是很理解这句话,那推荐认真看下下面的示例代码,避免以后写代码时踩坑. ...

  8. 注解与AOP切面编程实现redis缓存与数据库查询的解耦

    一般缓存与数据库的配合使用是这样的. 1.查询缓存中是否有数据. 2.缓存中无数据,查询数据库. 3.把数据库数据插入到缓存中. 其实我们发现 1,3 都是固定的套路,只有2 是真正的业务代码.我们可 ...

  9. PYNQ上手笔记 | ① 启动Pynq

    现在人工智能非常火爆,一般的教程都是为博硕生准备的,太难看懂了,分享一个非常适合小白入门的教程,不仅通俗易懂而且还很风趣幽默,点☞这里​​​​​​​☜进入传送门~ = = = = 我是华丽的分割线 = ...

  10. 在Java大环境下.NET程序员如何夺得一线生机

    先来看一组数据,从某招聘网站直接检索3-4w的岗位,会看到Java与.NET社会需求量的巨大差异,这里就不再对比高薪的岗位了,.NET的高薪岗位更是少的可怜:   笔者从业十余年,一直是在.NET圈子 ...