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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/287070.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++模版(基础)

目录 C泛型编程思想 C模版 模版介绍 模版使用 函数模版 函数模版基础语法 函数模版原理 函数模版实例化 模版参数匹配规则 类模版 类模版基础语法 C泛型编程思想 泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。 模板是泛型编程…

解決flask-restful提示Did not attempt to load JSON data 问题

在使用flask-restfull进行API开发的时候。一旦我使用类似下面的代码从url或者form中获得参数就会出现报错:Did not attempt to load JSON data because the request Content-Type was not ‘application/json’。 代码如下: # Flask_RESTFUl数据解析 f…

【微服务】接口幂等性常用解决方案

一、前言 在微服务开发中,接口幂等性问题是一个常见却容易被忽视的问题,同时对于微服务架构设计来讲,好的幂等性设计方案可以让程序更好的应对一些高并发场景下的数据一致性问题。 二、幂等性介绍 2.1 什么是幂等性 通常我们说的幂等性&…

Springboot+vue的企业质量管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频: Springbootvue的企业质量管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller&#xff09…

【JavaSE】数据类型和运算符

前言 从这一篇我们开始Java的学习~ 欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 前言 Java第一个程序 字面常量 字面常量的分类 结合代码理解 类型转换 类型提升 byte与byte的运算 正确写法 字符串类型St…

Matplotlib中英文使用不同字体的最优解

中英文使用不同字体,我们需要解决两个需求: 第一个需求:要用中文字体显示中文,不能全部都是框框。第二个需求:横纵坐标的数字用英文字体显示,英文用英语字体显示。 方法很简单,只需要添加一行…

【Entity Framework】 EF三种开发模式

【Entity Framework】 EF三种开发模式 文章目录 【Entity Framework】 EF三种开发模式一、概述二、DataBase First2.1 DataBase First简介2.2 DataBase First应用步骤2.3 DataBase First总结 三、Model First3.1 Model First简介3.2 Model First实现步骤 四、Code First4.1 Cod…

c++初阶------c++代码模块

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 ​🎂 作者介绍: 🎂🎂 🎂 🎉🎉&#x1f389…

背包DP模板

01背包 01背包-1 #include <bits/stdc.h> using namespace std;const int N 1e5 10; int n, m, f[N][N], v[N], w[N];int main() {cin >> n >> m;for (int i 1; i < n; i) {cin >> v[i] >> w[i];}for (int i 1; i < n; i) {for (int…

Python提取本体文件的数据

运行结果&#xff1a; 使用replace函数去除前缀。 查找OWL的对象属性&#xff1a; 输出结果&#xff1a; 出现最后这个的原因&#xff1a; 修改程序&#xff1a; 最后的输出结果&#xff1a; 这个解析之后是这个样子的&#xff1a;

C++_回文串

目录 回文子串 最长回文子串 分割回文串 IV 分割回文串 II 最长回文子序列 让字符串成为回文串的最少插入次数 回文子串 647. 回文子串 思路&#xff0c;i j表示改范围内是否为回文串&#xff0c; ②倒着遍历是为了取出dp[i 1][j - 1] ③i j 只有一对&#xff0c;不会重复…

C++ 动态规划

文章目录 一、简介二、举个栗子2.1斐波那契数列2.2最短路径&#xff08;DFS&#xff09; 参考资料 一、简介 感觉动态规划非常的实用&#xff0c;因此这里整理一下相关资料。动态规划&#xff08;Dynamic Programming&#xff09;&#xff1a;简称 DP&#xff0c;是一种优化算法…

淘宝app商品数据API接口|item_get_app-获得淘宝app商品详情原数据

获得淘宝app商品详情原数据 API返回值说明 item_get_app-获得淘宝app商品详情原数据 公共参数​​​​​​ 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地…

优化选址问题 | 基于和声搜索算法求解基站选址问题含Matlab源码

目录 问题代码问题 和声搜索算法(Harmony Search, HS)是一种模拟音乐创作过程中乐师们凭借自己的记忆,通过反复调整各乐器的音调,直至达到最美和声状态为启发,通过反复调整解向量的各分量来寻求全局最优解的智能优化算法。 下面是一个基于和声搜索算法求解基站选址问题的…

全面剖析Java多线程编程,抢红包、抽奖实战案例

黑马Java进阶教程&#xff0c;全面剖析Java多线程编程&#xff0c;含抢红包、抽奖实战案例 1.什么是多线程&#xff1f; 2.并发与并行 CPU有这些&#xff0c;4,8,16,32,64 表示能同时进行的线程 3.多线程的第一种实现方式 package com.itheima.reggie;/*** Author lpc* Date …

现在的市场对 C++ 的需求大吗?

先说结论&#xff1a;需求还是很大&#xff0c;但是没有什么初级程序员能干的岗位。 游戏引擎&#xff0c;存储&#xff0c;推荐引擎&#xff0c;infra&#xff0c;各种各样的性能敏感场景。 在开始前我分享下我的经历&#xff0c;我刚入行时遇到一个好公司和师父&#xff0c;…

RocketMQ学习笔记:消息存储模型,持久化文件,过期文件删除

这是本人学习的总结&#xff0c;主要学习资料如下 马士兵教育rocketMq官方文档 目录 1、消息存储结构1.1、CommitLog详解1.1.1、CommitLog存储的优点 1.2、ConsumeQueue详解1.3、Index详解 2、持久化文件3、过期文件删除机制3.1、判断过期文件3.2、删除的时机 1、消息存储结构…

大学宠物医疗试题及答案,分享几个实用搜题和学习工具 #学习方法#笔记#知识分享

大学开学&#xff0c;就意味着又回到了被线性代数、大学物理等测验题折磨的状态了……网站无法手动输入题干公式&#xff0c;初高中用过的搜题软件又都搜不到&#xff0c;想找个答案解析仿佛在大海捞针&#xff01;不过不用怕&#xff0c;今天小林就把从大学攒到毕业工作都在使…

一个单生产-多消费模式下无锁方案(ygluu/卢益贵)

一个单生产-多消费模式下无锁方案 ygluu/卢益贵 关键词&#xff1a;生产者-消费者模型、无锁队列、golang、RWMutex 本文介绍一个“单生产(低频)-多消费”模式下的无锁哈希类方案&#xff0c;这个方案的性能优于golang的RWMutex&#xff0c;因为它永远不会因为“写”而导致与…

网络上常见的环路指的是什么

人类的创造力与破坏力同样强大"。 网路互通&#xff0c;同样也衍生出纷繁复杂的路由协议和各种因特网服务&#xff0c;以及"网络安全"这个庞大的领域。 这也是为什么说当今所有的网络通讯流量中&#xff0c;80%的资源都被浪费&#xff0c;只有20%被用以有效数…