跟我学: 使用 fireasy 搭建 asp.net core 项目系列之二 —— 准备

时间:2021-09-13 15:19:20

==== 目录 ====

跟我学: 使用 fireasy 搭建 asp.net core 项目系列之一 —— 开篇

跟我学: 使用 fireasy 搭建 asp.net core 项目系列之二 —— 准备

跟我学: 使用 fireasy 搭建 asp.net core 项目系列之三 —— 配置

上篇对 fireasy 大致作了介绍,接下来的几天里,fireasy 将带领大家一起通过实例来学习如何搭建一个小型的项目,以及实现一些系统管理的功能,在此过程中,会对所使用的技术作一些剖析和分享,希望大家能够喜欢。

    一、设计项目结构

这里主要讲解的是 fireasy 的使用方法,因此对于项目的分层,没有那么多讲究,因此使用了精简至上的原则,采用最简单的方案,数据服务层即业务层。

项目名称 角色和用途
Fireasy.Zero.Web asp.net core web 项目
Firesay.Zero.Models 数据实体模型,定义ORM的实体类型
Fireasy.Zero.Services 数据服务层,提供数据交互
Fireasy.Zero.Infrastructure 基础设施层
Fireasy.Zero.Helpers 辅助类库

    二、创建项目

按照上表中给定的项目,在解决方案里添加各项目,这里除 Fireasy.Zero.Web 之外的项目其他,可以建成 .net standard,也可以建成 .net core,建成 ..net standard 的好处是,不仅仅 .net core 可以用,也可以使 .net framework 4.5 及以下的框架所使用,所以,如果你还有 asp.net mvc 5 的项目,可以考虑建成 .net standard 类库。

按照下图为项目添加 nuget package,同时建立项目之间的引用关系。注,.net core 项目有个好处,互有依赖的包可以只需添加最末的那个,它们之间就会建立依赖关系了,比如 Web 需要添加 Fireasy.Web.Mvc 和 Fireasy.Web.EasyUI 两个包,但是由于 Fireasy.Web.EasyUI 依赖于 Fireasy.Web.Mvc 因此,只需添加后者即可。再比如 Services,它是需要引用 Fireasy.Data.Entity 的,但是它所引用的 Models 已经安装了 Fireasy.Data.Entity 包,因此,它就不需要再安装包了。

跟我学: 使用 fireasy 搭建 asp.net core 项目系列之二 —— 准备

    三、数据库设计

一个系统的权限管理后台是必不可少的,因此我就拿这个例子来说说,后台权限管理功能包括模块(菜单)管理、机构管理、用户管理、角色管理、权限管理等等。数据表的设计图如下:

跟我学: 使用 fireasy 搭建 asp.net core 项目系列之二 —— 准备

各表的含义如下:

表名称 含义
 sys_org  机构表
 sys_user  用户表
 sys_module  模块(菜单)表
 sys_operate  操作(工具栏菜单)表
 sys_role  角色表
 sys_module_permission  模块权限表,即角色具有的模块权限
 sys_operate_permission  操作权限表,即角色具有的操作权限
 sys_org_permission  数据权限表,即角色具有哪些机构的数据查看权限
 sys_user_role  用户角色对应表,即用户拥有哪些角色
 sys_dict_type  字典类别表
 sys_dict_item  字典项表
 sys_log  日志表

    四、生成代码

设计好数据库后,使用代码生成工具生成实体类的代码(这些先说说 DBFirst 模式,后面会介绍 CodeFirlst 模式),这里推荐使用 CodeBuilder 来生成,它可以生成实体类,以及 DbContext ,甚至是 mvc 的 View 和 Controller。

CodeBuilder 的下载地址为  http://www.fireasy.cn/soft/codebuilder/CodeBuilder2setup.exe

打开 CodeBuilder,配置一个数据源(你的数据源可以是 SqlServer、MySql,也可以是 PowerDesign 的设计文档),然后连接数据源选择要生成的表。在生成代码之前,要设置以下几个参数:

NameMode 是命名规则,一般是使用 Pascal,刚刚数据模型你也看到了,所有表和字段的名称都是小写加下划线的,我希望生成的代码还是遵循 Pascal 命名规范,因此只需要将这个 NameMode 设为 Pascal 就行了,如果要沿用原来的命名,则改为 Inherit。

Namespace 是项目的命名空间,是前面一级的,这里设置为 Fireasy.Zero,它会以此为前缀,生成 Models 项目中实体类文件。

ProjectName 和 Author 是在备注中生成项目的名称以及作者。

TableRegex 是对表名的正则替换,如果表名称中有前缀,如 TB_ ,我们可以把这些前缀去掉,比如现在,所有表都是以 sys 开头,那么我们可以设 TableRegex 为 sys_ 。

跟我学: 使用 fireasy 搭建 asp.net core 项目系列之二 —— 准备

接下来,从模板里选择 T4 Template 中的 Fireasy for C# 模板,最后点生成即可。

这个模板会生成 Models 下的所有实体类文件,以及 DbContext,还有 MVC 下的 View 和 Controller,当然后两者只提供一个参考,具体的业务代码还是自己动手去实现。你可以自己去写 T4 模板来满足你的生成需要。

跟我学: 使用 fireasy 搭建 asp.net core 项目系列之二 —— 准备

生成的文件如下:

跟我学: 使用 fireasy 搭建 asp.net core 项目系列之二 —— 准备

将生成的 Models 里的所有文件拷贝到 Fireasy.Zero.Models 项目下,将生成的 Data 目录下的 DbContext 拷贝到 Fireasy.Zero.Services 项目下。MVC 的 View 和 Controller 就不使用了,仅作参考。

好了,准备工作都完成了,接下来就要开始一步一步地来实现业务功能。敬请期待下一篇。

==================================相关资源==================================

fireasy源码:  https://github.com/faib920/fireasy2

zero源码:  https://github.com/faib920/zero

代码生成器:  http://www.fireasy.cn/soft/codebuilder/CodeBuilder2setup.exe