项目开源-基于ASP.NET Core和EF Core的快速开发框架
前言:作为一名95后的程序猿,已经写了一年多的代码了,为了提升自己的技术水平,所以决定尝试编写一个快速开发框架开源出来,一来提升自己的技术水平,二来助力.NET Core生态发展
写这个框架主要是为了帮助减少一些基础的CURD的操作,解放码农,留出更多的时间去改BUG,免的被祭天,框架的目标人群为中小项目,大项目不适用。
项目简介
框架名称:Tassdar 我用星际争霸中,星灵的最高指挥官Tassdar的名字来命名了这个框架(星际中二粉)。
框架需求:.NET Core 2.2以上SDK ,Mysql5.7
git地址:https://gitee.com/Tasssdar/Tassdar.git
框架结构:
框架中的代码我都加了注释,这里仅简单介绍一下结构
框架一共分为4层
Core层:
Core层提供了日常需要用的一些基础帮助类,用于方便数据的处理
FreamWork层:
FreamWork层封装了整个框架的核心代码,EF的上下文,快速数据处理接口等都在这个类库中,本框架中Mysql的驱动没有使用官方驱动,因为官方驱动不支持LINQ的Any,如果使用者有需要可以替换Nuget中的包
Service层
Service层用来让使用者放置新增的接口和逻辑等,EF的CodeFirst设计类放在在这层
Logger层
Logger层是对日志操作的一个封装类库,可以让打出来的日志阅读性极佳
使用方法
1.创建数据库
在本地的mysql数据库中创建一个数据库
2.进入框架在Service创建一个实体类,让它继承EntityBase,Table特性中是你给表起的名字,mysql默认小写
让实体继承EntityBase是为了让EF扫描实体的时候扫描进去,如果没有继承就不回被扫描进去,逻辑在EFContext里,可以自行看源码
3.进行数据库的迁移
在Servier层的Logic文件夹下找到DbGen,把刚才新增的实体放到这个类下,使用者记得把这里的链接字符串换成你自己的
执行迁移指令,注意,迁移指令必须在Service层的根目录下执行
dotnet ef migrations add 随便打个名
dotnet ef database update 同步到数据库
执行完后会发现数据库中的表已经创建完成
4.逻辑层配置
在Service层下分别建立改实体的业务逻辑接口和业务逻辑实现类
这里的Api文件夹中的接口是为了把逻辑层和Web层使用的接口进行拆分,正常顺序是需要在Controller中外露的接口放在Api文件夹下的接口中,其余的放在Interface下,然后让IUser继承IUserApi,觉得费事的同学可以不写,直接全部写到IUser里
然后让IUser接口继承ILogicBase,让UserLogic继承LogicBase和IUser
IValidate接口是数据校验接口,继承该接口后在数据持久化时会进行数据的校验,继承该接口后会实现Validate方法,把验证逻辑写到方法中,例如,我们要求用户名不允许重复
5.Web层配置
我们创建一个Controller让它继承自ApiControllerBase,和IUserApi,这时IUserApi的作用就显现出来了,我们直接实现IUserApi就省的再去打那一堆的Action了,如果没有写IUserApi可以免去这一步,
在控制器的上面带上Route参数标明你的路由,ApiControllerBase中封装了一些基础的数据操作,可以让你直接操作一些简单的数据,但是要记得在使用前在构造函数中对_baseLogic进行赋值
6.启动项目
项目中配置了Swagger,启动前请先在Web项目右键:属性:生成把XML文档打上对勾
启动项目后访问/swagger,就可以愉快的玩耍了
可以看一下数据校验接口的效果,当我两次添加同为名叫小明的用户时,显示出我们在验证方法中输出的信息
好了,就简单介绍到这里,第一次开源没什么经验哈哈哈哈哈,欢迎各位大佬指正,但是不喜勿喷,爱用不用哈哈哈哈哈哈哈,源码上我都打了注释,很容易看的。
能写出这个框架首先要感谢我的授业恩师宋老师的教诲,其次就是在技术上指导了我很多的Kevin
如果框架的反馈率不错的话,我会考虑进行下一步的升级,比如提供异步支持之类的等等
谢谢各位的支持。
项目开源-基于ASP.NET Core和EF Core的快速开发框架的更多相关文章
- ABP CORE 框架入门视频教程《电话薄》基于 Asp.NET Core2.0 EF Core
ABP框架简介 ABP是"ASP.NET Boilerplate Project (ASP.NET样板项目)"的简称. ASP.NET Boilerplate是一个用最佳实践和流行 ...
- 【ASP.NET Core】EF Core - “影子属性” 深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 1
[ASP.NET Core]EF Core - “影子属性” 有朋友说老周近来博客更新较慢,确实有些慢,因为有些 bug 要研究,另外就是老周把部分内容转到直播上面,所以写博客的内容减少了一点. ...
- asp.net core + mysql + ef core + linux
asp.net core + mysql + ef core + linux 以前开发网站是针对windows平台,在iis上部署.由于这次需求的目标服务器是linux系统,就尝试用跨平台的.NET ...
- 一个官翻教程集合:ASP.NET Core 和 EF Core 系列教程
通过一个大学课程案例讲解了复杂实体的创建过程及讲解 1.ASP.NET Core 和 Entity Framework Core 系列教程——入门 (1 / 10) 2.ASP.NET Core 和 ...
- ASP.NET CORE 使用 EF CORE访问数据库
asp.net core通过ef core来访问数据库,这里用的是代码优先,通过迁移来同步数据库与模型. 环境:vs2017,win10,asp.net core 2.1 一.从建立asp.net c ...
- Entity Framework Core(EF Core) 最简单的入门示例
目录 概述 基于 .NET Core 的 EF Core 入门 创建新项目 更改当前目录 安装 Entity Framework Core 创建模型 创建数据库 使用模型 基于 ASP.NET Cor ...
- ASP.NET Core模块化前后端分离快速开发框架介绍之2、快速创建一个业务模块
源码地址 GitHub:https://github.com/iamoldli/NetModular 演示地址 地址:https://nm.iamoldli.com 账户:admin 密码:admin ...
- .NET 5/.NET Core使用EF Core 5连接MySQL数据库写入/读取数据示例教程
本文首发于<.NET 5/.NET Core使用EF Core 5(Entity Framework Core)连接MySQL数据库写入/读取数据示例教程> 前言 在.NET Core/. ...
- net Core 通过 Ef Core 访问、管理Mysql
net Core 通过 Ef Core 访问.管理Mysql 本文地址:http://www.cnblogs.com/likeli/p/5910524.html 环境 dotnet Core版本:1. ...
随机推荐
- 【vuejs面试题】务必熟知的vuejs面试题「务必收藏」
如果能帮到你,点个赞吧,务必熟知的vuejs面试题「务必收藏」 vuejs 基础必备 1.active-class 是哪个组件的属性?嵌套路由怎么定义 (1).active-class 是 vue-r ...
- 01分数规划问题(二分法与Dinkelbach算法)
链接 前置技能 二分思想 最短路算法 一些数学脑细胞? 问题模型1基本01分数规划问题给定n个二元组(valuei,costi),valuei是选择此二元组获得的价值(非负),costi是选择此二元组 ...
- 区块链开源实现hyperledger fabric架构详解
hyperledger fabric是区块链中联盟链的优秀实现,主要代码由IBM.Intel.各大银行等贡献,目前v1.1版的kafka共识方式可达到1000/s次的吞吐量.本文中我们依次讨论:区块链 ...
- 深入理解hadoop值MapReduce(2)
1.MapReduce编程模型概述 MapReduce编程模型给出了分布式的编程方法,总共分为5个步骤.分为这5个步骤的优点:组件化和并行化 (1)迭代.遍历输入数据,并将其解析成key/value键 ...
- Linux学习--第一天--Unix 、 Linux 发展史,Linux应用领域
UNIX发展史 肯·汤姆森开发出linux. 肯·汤姆森的同事丹尼斯·里奇在1971年开发了C语言. 操作系统 公司 硬件平台 AIX IBM PowerPC HP-UX HP PA-RISC Sol ...
- 基于FPGA的以太网开发
基于FPGA的以太网开发,在调试过的FPGA玩家开来,其实算不上很难的技术!但是如果只是菜鸟级别的选手,没有调试过的话,就有些头疼了!早在自己在实习的时候,就接触到XAUI(万兆以太网口)接口,但是由 ...
- Centos 7 Mysql 最大连接数超了问题解决
错误:Can not connect to MySQL server. Too many connections -mysql 1040错误 这是因为对 Mysql 进行访问,未释放的连接数已经达到 ...
- VMware使用自带工具vmware-vdiskmanager精简占用磁盘空间
https://blog.csdn.net/xcl113/article/details/50715943 vmware-vdiskmanager压缩磁盘大小,验证有效 一 .sudo apt-get ...
- oracle中用case when查询列表
查询sql语句如下 SELECT * FROM ( SELECT * ,ROW_NUMBER() OVER ( PARTITION BY scene_code ORDER BY (CASE statu ...
- 【python基础】集合方法汇总
一.定义 用于存储一组无序的不重复的数据 二.特点 1. 集合是无序的 2.集合中的元素是不重复的, 唯一的 3.集合中存储的数据必须是不可变的数据类型 4.集合是可变的数据类型 三.语法 set1 ...