==== 目录 ====

跟我学: 使用 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

最新文章

  1. Hibernate 系列 07 - Hibernate中Java对象的三种状态
  2. Android 实现QQ扩展listview(expandlistview)
  3. nvmw安装,用于控制node版本;
  4. VS 解决方案管理器和 编辑窗口同步 联动
  5. C#设计模式(4)——抽象工厂模式
  6. Gradle的简介、安装与配置
  7. sctf pwn200
  8. linux的Make使用的重定向
  9. openflow控制器和交换机之间的消息
  10. Spring框架基础(中)
  11. ISP PIPLINE (六) 3A 综述
  12. zabbix使用微信报警(四)
  13. Mybatis 学习总结
  14. 通过mapreduce把mysql的数据读取到hdfs
  15. 第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获得连接字符串
  16. iOS:创建撒花动画
  17. ajax 跨域解决方法
  18. JAVA汉字转拼音(取首字母大写)
  19. D. Flowers Codeforces Round #271(div2)
  20. linux下如何退出tmux和重新进入tmux

热门文章

  1. Python编写的ARP扫描工具
  2. WPF自定义Popup和弹出菜单
  3. Jquey模糊选择
  4. [JAVA · 0基础]:16.经常使用类
  5. iOS 判定string是不是中文字符
  6. leetcode 790. Domino and Tromino Tiling
  7. leetcode 750. Number Of Corner Rectangles
  8. [NOIP2011提高组day2]-3-观光公交
  9. 有待总结的KMP算法 sdut oj 2463 学密码学一定得学程序
  10. HDU5015 233 Matrix —— 矩阵快速幂