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

前言

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.AdminLTEnetstandard2.0、net45
FreeSql.AdminLTE.Toolsnetcoreapp2.1
FreeSql.AdminLTE.Previewnetstandard2.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));
}

image

image

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,并且目录为当前地址

31407-20190902032700917-1927141278.png

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、创建几个常用的实体类,点击下载演示的实体类

31407-20190902033628504-1802138798.png

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 文档生成功能,再执行此操作

31407-20190902033715851-1578368593.png

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

31407-20190902031707299-253471606.png

31407-20190902031747320-501611212.png

感悟

不是不喜欢用 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/447864.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新驾考科目三-2014新交规科目三大路考试技巧

新驾考科目三考试内容及变化&#xff1a; A、上车准备;B、起步;C、直线行驶; D、加减挡位操作;E、变更车道; F、靠边停车;G、直行通过路口; H、路口左转弯;I、路口右转弯;J、通过人行横道线;K、通过学校区域;L、通过公共汽车站;M、会车; N、超车;P、掉头;Q、夜间行驶。增加了加…

《小狗钱钱》:理财首先应该有一种强烈的意识

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 《小狗钱钱》读完了。以下是个人觉得很有帮助和启发意义的摘抄。 1) "忽视就是一种认输"。2) 并非困难使我们放弃&#xff0c…

R语言 plot()函数 基础用法

plot(xx轴数据,yy轴数据,main"标题",sub"子标题"&#xff0c;type"线型",xlab"x轴名称"&#xff0c;ylab"y轴名称"&#xff0c;xlim c(x轴范围&#xff0c;x轴范围),ylim c(y轴范围,y轴范围)) 转载于:https://www.cnblogs…

广州驾校考试实际道路考试注意事项(图)

导读&#xff1a;面对实际道路考试时&#xff0c;大家都会有些紧张&#xff0c;因为这个科目不再只是面对场地&#xff0c;而是要面对各种状况和各种车辆&#xff0c;也是获取驾照的最后一个关卡。因此&#xff0c;为了让大家掌握考试的整个流程&#xff0c;网为大家带来科目四…

《 Docker 进阶与实战 》 读书笔记

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 以下内容全文出自书目&#xff1a;《 Docker 进阶与实战 》 1. Docker 定义&#xff1a;一个开源的容器引擎&#xff0c;可以方便地对容…

农村女人与城市女人的差别

1、农村女孩20岁结婚当妈很普遍&#xff0c;城市女孩三十多岁做剩女很普遍。 2、农村女孩对男方主要谈彩礼和家庭条件;城市女孩对男方主要谈房子和车子。 3、农村女人婚后不管经济条件如何立马生孩子&#xff0c;且基本上是两胎以上;城市女人婚后得看条件计划生孩子&…

【转】R语言函数总结

原博&#xff1b;R语言与数据挖掘&#xff1a;公式&#xff1b;数据&#xff1b;方法R语言特征 对大小写敏感通常&#xff0c;数字&#xff0c;字母&#xff0c;. 和 _都是允许的(在一些国家还包括重音字母)。不过&#xff0c;一个命名必须以 . 或者字母开头&#xff0c;并且如…

《工作前5年,决定你一生的财富》三公子TXT,PDF,epub,mobi,azw3,kindle电子书下载

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 去年收到编辑出书的邀约&#xff0c;想让我把这些年的理财心得做个整理&#xff0c;跟学习理财的朋友一起分享。其实&#xff0c;收到邀…

潜藏在人体体内的12种毒素

人的身体内有12大毒素为细菌的增殖和侵袭铺好了道路。百病不生&#xff0c;就得清除身体内的12毒素。身体内有哪些毒素以及百病不生的解决方法&#xff1a; 体内毒素1.坏胆固醇 坏胆固醇主要表现为&#xff1a;初期没有自觉症状&#xff0c;出现黄色瘤(淡黄色的脂肪肿块)时…

const型数据小结

以下面Time类为例&#xff1b; #include<iostream> using namespace std; class Time { public:Time(int,int,int);void fun();int hour; int minute; int sec; }; Time::Time(int h,int m,int s) { hourh; minutem; secs; }; 形 式 含 义 Tim…

《趋势的力量》-- 观念决定了个人发展的战略路线(大学生选择专业、就业、考研与否的建议)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 最近几天看了好几本书&#xff0c;其中这一本个人觉得很有启发意义。于是记录一二。 主体大纲&#xff1a; -------------------------…

广州交警发布科目三电子路考操作要点

眼看着驾考科目三正式实施新考法的日子就要来了&#xff0c;不少在4月15日之后考试的学员开始着急了&#xff0c;这科目三的电子考到底考什么&#xff1f;不仅学员说不清楚&#xff0c;许多驾校教练也说不清楚&#xff0c;他们只能根据经验猜想个大概。现在好了&#xff0c;官方…

中间件 - 初识

中间件 - 初识 ​ 在Java项目实际开发中&#xff0c;我们所使用的ActiveMQ、RibbitMQ、Kafka、Tomcat、WebLogic&#xff0c;这些都可以统称为中间件。 ​ 我们初次去了解&#xff0c;什么是中间件? 一、中间件简介 ​ 什么是中间件&#xff1f; ​ 由于业务、机构和技术是不断…

VUE 解决:Property or method “deleteFun“ is not defined on the instance but referenced during render.

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 一个点击事件报错&#xff1a; Property or method "deleteFun" is not defined on the instance but referenced during…

广州交警发布路考秘籍 科目三扣分点近80项

科目三扣分点近80项 设定13种不合格情形 电子路考16日将正式全面实行&#xff0c;昨日&#xff0c;广州市交警部门发布《科目三路考系统操作指南和评判标准》。据不完全统计&#xff0c;人工评判加上计算机评判&#xff0c;扣分点多达近80项&#xff0c;还设定了13种情形一律不…

js中动态引入css样式文件

function loadStyles(url) {var link document.createElement("link");link.rel "stylesheet";link.type "text/css";link.href url;var head document.getElementsByTagName("head")[0];head.appendChild(link); } 使用&#xf…

java 字符串拆分成单个字符放到 list 集合

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 解决方法&#xff1a; 例如把“我是谁”拆开放到list中 public static void main(String args[]) {String verify"我是谁";…

修改滚动条的样式

<style>.innerbox{overflow-y: auto;background-color: #f8f8f8;height: 200px;padding: 10px;}.innerbox::-webkit-scrollbar {/*滚动条整体样式*/width: 4px; /*高宽分别对应横竖滚动条的尺寸*/height: 4px;scrollbar-arrow-color:red;}.innerbox::-webkit-scrollb…

2014年广州科目三道路驾驶技能考试/广汕路科目三路考系统操作和评判指南

一 上车准备 上车准备操作要点&#xff1a; 绕车一周&#xff0c;观察车辆外观和周围环境&#xff0c;确认安全。 考生绕车一周&#xff0c;检查轮胎气压、轮胎磨损情况、轮胎螺栓有无松动&#xff0c;检查有无漏水、漏油等情况&#xff0c;车辆外观有无凹凸等碰撞情况&…

滚动条插件nicescroll的使用

https://www.hangge.com/blog/cache/detail_1931.html 使用&#xff1a; 需要引入jQuery插件和 jquery.nicescroll.js插件 修改滚动条&#xff1a; $("#thecondMenu_container").niceScroll({   cursorcolor: "#b3b3b3",   background: "#eee&quo…