当前位置: 首页 > news >正文

开源博客项目Blog .NET Core源码学习(11:App.Core项目结构分析)

  开源博客项目Blog的App.Core项目主要定义数据库表对应的数据类,同时定义配置文件读取、日志记录、辅助缓存等辅助类。App.Core项目安装的Nuget包不多,仅包括SqlSugarCore和Microsoft.Extensions.DependencyInjectio两类。
  App.Core项目的顶层文件夹如下图所示,下面逐一概述其大致用途。

在这里插入图片描述

  Config文件夹。包含对应App.Hosting项目的appsettings.json文件不同配置节的数据结构定义,分别为DbConfig(数据库连接字符信息)、QQAuthConfig(QQ授权登录配置)、SysConfig(系统基础配置),同时还定义了基于EasyCaching的缓存类SqlSugarCache,用于配置SqlSugar连接时配置ORM缓存。
  Data文件夹。其中的TransactionAttribute特性类供App.Application项目的数据库操作函数使用,用于启用数据库事务,而ISoftDelete接口仅定义一DeleteMark属性,供App.Core项目的Entities文件夹中众多数据库实体类继承及实现。
  Entities文件夹。保存数据库实体类、日志类等相关的接口、类定义。其下级结构如下图所示,其中:
  Blog文件夹包含与博客网站中文章分类、文章及标签、时间线等相关的实体类定义;
  Logs文件夹包含与系统异常、系统执行SQL、系统用户登录、系统操作等相关的日志类定义,但暂未看到使用这些类型记录日志的地方;
  SysManager文件夹包括与角色、授权、系统模块与按钮相关的类型定义;
  User文件夹包括与用户、账号、QQ账号相关的类型定义;
  IEntity泛型接口和Entity泛型类定义和实现了Id属性,App.Core项目的绝大部分数据类都继承了Entity泛型类。Post类应该保存的是类似公告的数据,但暂未在解决方案中找到使用该类的地方。

在这里插入图片描述

  Extensions文件夹。包含的ServiceCollectionExtension类定义SqlSugar的连接和配置函数,App.Hosting项目的program.cs文件中调用该函数启用SqlSugar模块;SqlSugarExtensions扩展类定义了分页和动态增加过滤器两个扩展函数。
  Pager文件夹。包含的IPagedList和PagedList定义和实现了分页数据接口,主要供SqlSugarExtensions类的分页函数ToPage使用。
  Repository文件夹。包含的IAppRepository泛型接口和AppRepository泛型类定义和实现了常用的增删改查等数据库操作函数,主要调用SqlSugar实现。
  Share文件夹。包含的CreativeType枚举定义了博客中的文章类型,包括原创和转载两种。

参考文献:
[1]https://gitee.com/miss_you/Blog
[2]https://www.donet5.com/Home/Doc
[3]https://github.com/MapsterMapper/Mapster
[4]https://github.com/rivenfx/Mapster-docs

相关文章:

  • React 18中hook函数详解之useState和useEffect
  • Leetcode第35题:搜索插入位置
  • 【漏洞复现】WordPress Plugin NotificationX 存在sql注入CVE-2024-1698
  • Vue2(十一):全局事件总线、消息订阅与发布pubsub、TodoList的编辑功能、$nextTick、过渡与动画
  • 3-26 备赛
  • Java内存模型简述
  • 前段项目结构
  • 7-24 约分最简分式(PTA)
  • ES聚合查询
  • Vue3更新Package.json版本号
  • 海外云手机如何帮助亚马逊引流?
  • 自定义类型(2)
  • 各城市宗族文化姓氏占比数据
  • 微服务篇:设计一个注册中心和配置中心需要从哪些方面入手
  • 工具 - DBeaver 的简单使用
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 【个人向】《HTTP图解》阅后小结
  • 【刷算法】从上往下打印二叉树
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • k8s如何管理Pod
  • Node 版本管理
  • Spark RDD学习: aggregate函数
  • SpiderData 2019年2月16日 DApp数据排行榜
  • SpingCloudBus整合RabbitMQ
  • WebSocket使用
  • 将回调地狱按在地上摩擦的Promise
  • 前端
  • 少走弯路,给Java 1~5 年程序员的建议
  • 深入 Nginx 之配置篇
  • 算法-图和图算法
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 应用生命周期终极 DevOps 工具包
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • # 数论-逆元
  • #if #elif #endif
  • #传输# #传输数据判断#
  • (12)Linux 常见的三种进程状态
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (十) 初识 Docker file
  • (十一)手动添加用户和文件的特殊权限
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .net framework4与其client profile版本的区别
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • 。Net下Windows服务程序开发疑惑
  • @angular/cli项目构建--Dynamic.Form
  • @JoinTable会自动删除关联表的数据
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • @NestedConfigurationProperty 注解用法
  • @Transactional 详解