==== 目录 ====
跟我学: 使用 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 包,因此,它就不需要再安装包了。
三、数据库设计
一个系统的权限管理后台是必不可少的,因此我就拿这个例子来说说,后台权限管理功能包括模块(菜单)管理、机构管理、用户管理、角色管理、权限管理等等。数据表的设计图如下:
各表的含义如下:
表名称 | 含义 |
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_ 。
接下来,从模板里选择 T4 Template 中的 Fireasy for C# 模板,最后点生成即可。
这个模板会生成 Models 下的所有实体类文件,以及 DbContext,还有 MVC 下的 View 和 Controller,当然后两者只提供一个参考,具体的业务代码还是自己动手去实现。你可以自己去写 T4 模板来满足你的生成需要。
生成的文件如下:
将生成的 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