zoukankan      html  css  js  c++  java
  • 项目开源-基于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

    如果框架的反馈率不错的话,我会考虑进行下一步的升级,比如提供异步支持之类的等等

    谢谢各位的支持。

  • 相关阅读:
    实用工具---制作试卷
    RDP Client 参数含义调查
    xenserver 虚拟机定时开关机实现
    xenserver 脚本学习之/opt/xensource/bin/xapi-autostart-vms
    最佳的前端监听事件触发方式
    前端之Angularjs
    网页分享
    面试题之事务
    Spring Security安全访问控制解决方案的安全框架
    docker部署
  • 原文地址:https://www.cnblogs.com/Tassdar/p/10865495.html
Copyright © 2011-2022 走看看