项目名称:学生信息管理系统1.0

后台框架:.Net Core 3.1 + EF Core    yrjw.ORM.Chimp

前端框架:ASP.NET Core MVC  +  LayUI + Bootstrap

数据库:MS-SQL 或 MySQL 二选一

迁移方式:Code First  (推荐CLI命令初始化数据库和升级)

框架结构图:

项目需求:  (_PS:不包含业务,只为展示开发案例。)

登录模块案例 ,用户名密码验证码登录方式—— 已完成。

配置信息设置案例,存库方式——已完成。

操作员管理案例,简单CURD操作——已完成。

部门管理案例,简单CURD操作——已完成。

学生信息查询案例,简单CURD操作——已完成。

框架封装介绍:

1、简单三层架构,前后端分离模式,目前采用Layui前端组件的MVC框架,后面可直接替换UI层VUE等前端框架。

2、集成了之前发布的yrjw.ORM.Chimp包,该组件只是将EF Core使用仓储模式的工作单元进行了封装,常用的CURD方法和API统一返回的模型。

3、依赖注入,原来部分使用了Autofac属性注入,后来发现使用Lazy<>冲突,将全部采用DI构造函数方式注入服务。

4、封装配置项绑定绑定,支持ChangeToken.OnChange热更新。

5、添加服务,服务端缓存、CORS、ORM、Lazy懒加载、AutoMapper、认证、授权、异常处理。

6、添加Swagger,添加Jwt身份认证,模型验证结果格式化。

7、封装了Serilog日志组件。

8、封装了MemoryCache缓存。

9、封装了Auth.Jwt身份认证。

10、封装了yrjw.CommonToolsCore常用类库扩展包。

11、MVC项目中使用WebApiClient组件,调用WebApi接口数据。

看到这必须上代码了,框架源码下载地址:

https://gitee.com/h_gxi/StudentManageSystem.git

使用说明:

1、Star源代码或下载压缩包后,使用VS2019打开解决方案,如上图。

2、设置数据库连接字符串,Student.Core.API项目中找到配置文件进行修改,创建数据库前右键重新生成项目。

3、进入Student.Core.API项目根目录下,执行CMD命令。

使用dotnet ef命令,必须安装dotnet-ef,依次执行命令:

dotnet tool install -g dotnet-ef
dotnet tool update -g dotnet-ef 通过数据库迁移命令自动生成数据库表: dotnet ef database update
 

看到这里数据库已生成成功了。

4、设置启动项目,将Student.Core.API和StudentManageSystem设为启动。

5、F5启动,就可以访问项目了,初始用户名:admin  密码:123456

笔记:

  下面总结下本人在学习.net core中遇到的一些问题,以及整个框架搭建的思路和使用开发教程。

去年刚接触.net core时发布过一篇关于.Net Core2.2 + EF Core + DI,三层框架项目搭建教程 ,当初想法比较简单框架也不够成熟,通过一年的学习与积累重新搭建了这套框架,一套比较完整的单应用系统,适用于中小型项目的开发应用。

起初构建框架思想是,前后端分离、微服务架构、负载均衡、分库分表,解决高并发需求为目的,但后来学习微服务架构中遇到了一些问题,再就是前端VUE初学阶段,直接使用Vue.js UI等框架有些吃力,最终选择先采用MVC版代替UI层进行过度一下,关于微服务这块本人一直在学习过程中,搭建微服务架构还需要一点点时间吧,先来个单应用程序部署,对于小项目来说也是最佳选择不是吗。

先说说本次框架都有哪些改变,由之前的.Net Core2.2直接升级采用最新版.Net Core3.1开发,ORM框架还是采用官方的EF Core(为什么选他就不多纠结了,只为学习目的,后期也可能会换成其他轻量级框架如FreeSQL),使用ORM工作单元的封装也不需要自己单独弄了,我找了一个封装好的组件包进行了升级和改造,并支持了.Net Core3.1版,组件包开源地址yrjw.ORM.Chimp,使用的是Code First模式,后期维护可以使用数据库迁移工具命令,也可以单独sql脚本进行维护。当前项目中虽然没用VUE.js,但还是按前后端分离模式做的,多了MVC项目代替UI层(StudentManageSystem),所有业务实现都是通过WebApi接口获取数据。框架封装除了ORM使用方便以外,Service层也有封装基类方法,减少CURD操作重复代码量。

这一年公司事情诸多,各种个性化项目对接,只能是在忙里偷闲弄这项目可能存在有些细节未处理到位的地方,其实这套框架早在几个月前已经差不多封装好了,一直没有时间去整理文档,刚抽空整理文档也做了些优化和完善了部分功能。这项目不存在任何业务逻辑,除了登录模块其他的都按开发案例作参考。

框架源代码已经发布出来了,有喜欢的朋友点赞,不喜欢的也欢迎拍砖,在这里就不贴代码了,我的单应用程序框架基本就是这个样子的,有不明白的地方可以留言我,我会抽空回复的。

.Net Core3.1 + EF Core + LayUI 封装的MVC版后台管理系统的更多相关文章

  1. Asp.net Core + EF Core + Bootstrap搭建的MVC后台通用管理系统模板(跨平台版本)

    Asp.net Core + EF Core + Bootstrap搭建的MVC后台通用管理系统模板(跨平台版本) 原创 2016年07月22日 10:33:51 23125 6月随着.NET COR ...

  2. ASP.NET MVC5+EF6+LayUI实战教程,通用后台管理系统框架(1)

    文章转自:http://www.xuboyi.com/298.html 前言 网站运营有一段时间了,记录的内容都是杂七杂八的,思前想后,决定给大家分享一套ASP.Net的系列教程.手把手的做一套通用后 ...

  3. ASP.NET MVC5 + EF6 + LayUI实战教程,通用后台管理系统框架(3)

    前言 本节将我们自己的CSS样式替换系统自带的 开始搭建 将脚本文件夹删掉,将内容文件夹里的内容删掉,将我们自己的CSS样式文件,全部复制到内容里边 新建家庭控制器 给家庭控制器添加索引视图 指数代码 ...

  4. ASP.NET MVC5+EF6+LayUI实战教程,通用后台管理系统框架(4)- 漂亮的登录界面

    前言 这一讲,给大家添加登录页面 实现 添加Login的Index视图 @{ Layout = null; } <!DOCTYPE html> <html class="l ...

  5. springboot学习笔记:11.springboot+shiro+mysql+mybatis(通用mapper)+freemarker+ztree+layui实现通用的java后台管理系统(权限管理+用户管理+菜单管理)

    一.前言 经过前10篇文章,我们已经可以快速搭建一个springboot的web项目: 今天,我们在上一节基础上继续集成shiro框架,实现一个可以通用的后台管理系统:包括用户管理,角色管理,菜单管理 ...

  6. ASP.NET MVC5+EF6+LayUI实战教程,通用后台管理系统框架(7)- EF增删改查

    前言 上一节创建了实体数据库,这次我们来看看怎么操作这个实体 代码实现 新建一个UserInfoController的控制器:不需要写什么代码,系统自动生成Index方法: 创建IDAL,DAL,IB ...

  7. ASP.NET MVC5+EF6+LayUI实战教程,通用后台管理系统框架(5)- 创建项目结构

    前言 关于理论知识,我的表达能力有限,知识水平有限,就不过多的讲解编程工作中的专用术语了,大家写的代码多了,自然就懂了 前几节课,我们看到了后台的主页面,以及一个自认为比较漂亮的登录界面,算是编程套路 ...

  8. ASP.NET MVC5+EF6+LayUI实战教程,通用后台管理系统框架(2)

    前言 本节先给大家搭建UI部分,让大家能看到点东西,就好像所有编程书里,开始都是一个Hello World一样 开始搭建 首先建立空白解决方案,我们命名为BYCMS 然后添加新项目BYCMS 我习惯用 ...

  9. ASP.NET MVC5+EF6+LayUI实战教程,通用后台管理系统框架(6)- 创建数据库

    前言 其实网站就是一座连接用户和数据库的梁桥,数据库通过网站,将信息以不同的方式,展现给客户,客户通过网站,对数据库进行各种操作 下面,我们用一个例子,给大家展示下基本的增删改查操作 创建数据库 创建 ...

随机推荐

  1. 常用核心数据库查询sql

    一.查询账户信息 -- 查询数据量 /*{"xdb_comment":"1","table":"mb_tran_hist" ...

  2. java基础(11)--封装

    一.java面向对象三大特别: 1.封装 2.继承 3.多态   二.封装的作用 1.属性私有化(private) 2.对外提供简单的入口 如公开的set()与get()方法,并且都不带static ...

  3. python3 httpConnection——post请求

    #coding=utf-8 import http.clientimport urllib.parse #与服务器建立链接url = 'code.ali.cn:80' conn = http.clie ...

  4. 深入理解Spring AOP 1.0

    本文相关代码(来自官方源码spring-test模块)请参见spring-demysify org.springframework.mylearntest包下. 统称能够实现AOP的语言为AOL,即( ...

  5. Ionic 移动端

    <body ng-app="testApp"> <ion-header-bar align-title="left" class=" ...

  6. 撸了一个 Feign 增强包

    前言 最近准备将公司的一个核心业务系统用 Java 进行重构,大半年没写 Java ,JDK 都更新到 14 了,考虑到稳定性等问题最终还是选择的 JDK11. 在整体架构选型时,由于是一个全新的系统 ...

  7. Python exec 内置语句

    描述 exec 执行储存在字符串或文件中的Python语句,相比于 eval,exec可以执行更复杂的 Python 代码.岭组词  https://www.cgewang.com/post/2205 ...

  8. PHP strspn() 函数

    实例 返回在字符串 "Hello world!" 中包含字符 "kHlleo" 的数目: <?php高佣联盟 www.cgewang.comecho st ...

  9. C/C++编程笔记:编写完成了一个C/C++程序,如何做一个界面出来?

    最简单的方法是用vc6新建一个Win32 Application空工程,然后添加一个cpp文件,输入 (注意添加对话框资源,并且在对话框上添加一个文本框) #include #include &quo ...

  10. bzoj 4278 [ONTAK2015]Tasowanie

    给出两个字符串 A B 让我们对其二路归并 求出能够归并出的最小字典序. 考虑后缀数组 不难发现我们将B直接连在A上会出现问题 问题是 A串剩下的和B串完全相同了 那么此时比大小就会用到B的部分 这是 ...