开源博客项目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