摘要: 本篇文章介绍过滤器以下几点知识点 1、什么是过滤器 2、过滤器的执行流程 3、过滤器的作用域 4、过滤器的工作原理 5、过滤器的5种类型 6、取消和短路 7、过滤器的注入写法 8、同种过滤器自定义顺序 1、什么是过滤器? .NET 中的过滤器(Filter)是 AOP(面向切面编程) 思想的一种实现 阅读全文
posted @ 2022-11-07 16:00 黄明辉 阅读(1072) 评论(0) 推荐(0) 编辑
摘要: 我们知道,如果在业务界面上删除一条数据,通常的做法是与后台通信,从数据库表中删除掉这一条记录,这种方式通常被称为硬删除。然而这种方式会带来一个弊端,即数据一旦删除了,就真的永久删除了,没有后悔药可以吃,也没有办法恢复。这样,在一些场景中,比如需要保留用户删除的痕迹或能够恢复删除的数据的时候,硬删除就 阅读全文
posted @ 2022-11-04 11:14 黄明辉 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 项目支持的环境:.NETCORE Standard 2.0 本项目基于NPOI组件,实现对常规格式的excel导入导出封装。 导出的excel格式,符合office格式,并非html格式的。 很多朋友应该都接触过NPOI,但是写一个导入导出,还是很繁琐的,基于此,我们封装了一个组件 请从nuget上 阅读全文
posted @ 2022-10-26 16:34 黄明辉 阅读(1063) 评论(0) 推荐(1) 编辑
摘要: /// <summary> /// 过滤词DFA算法实现 /// </summary> public class ForbiddentWordLibrary { /// <summary> /// 用分行过滤词文件来初始化过滤词库 /// </summary> /// <param name="pa 阅读全文
posted @ 2022-10-24 14:15 黄明辉 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 支持.NET/.NET Framework/.NET Core RabbitMQ作为一款主流的消息队列工具早已广受欢迎。相比于其它的MQ工具,RabbitMQ支持的语言更多、功能更完善。 本文提供一种市面上最/极简单的使用RabbitMQ的方式,只需要会调用以下三个方法,你就几乎可以掌握整个Rabb 阅读全文
posted @ 2022-10-13 09:00 黄明辉 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 对于很多初学NETCORE的同学来说,怎么从appsettings.json 文件中获取各种类型数据,一直没搞明白。 今天我们就对它的几种数据格式的读取做个说明。 appsettings.json 是我们项目的默认配置文件(我们也可以自定义其他.json文件,加到项目中),其是以json格式进行数据 阅读全文
posted @ 2022-10-11 15:33 黄明辉 阅读(886) 评论(0) 推荐(0) 编辑
摘要: 1.使用 EF.Functions.xxx 进行查询 (1).使用 EF.Functions.Like进行模糊查询要比 StartsWith、Contains 和 EndsWith 方法生成的SQL语句性能更优。 A. Contains语句,生成的sql为: var data3 = dbContex 阅读全文
posted @ 2022-10-09 08:57 黄明辉 阅读(839) 评论(0) 推荐(0) 编辑
摘要: 我们可以在PowerShell或者CMD命令行窗口里面进行迁移,使用命令行迁移分为下面的两个步骤。 首先我们要进入CodeFirst.DAL目录下面,然后执行下面的命令添加迁移: dotnet ef migrations add MyCodeFirst13 此时,有可能提示 dotnet ef 命令 阅读全文
posted @ 2022-09-29 09:03 黄明辉 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 二、程序包管理控制台迁移 需要在DAL层引用包:Microsoft.EntityFrameworkCore.Tools 然后在控制台程序中也需要引用包:Microsoft.EntityFrameworkCore.Design 这样,就完成了需要的组件的引用了。 接下来打开程序包管理控制台,在vs中的 阅读全文
posted @ 2022-09-29 09:01 黄明辉 阅读(331) 评论(0) 推荐(0) 编辑
摘要: 生成数据库表有下面的三种方式: 代码生成。 程序包管理器控制台迁移。 命令行迁移。 下面分别介绍上面的三种方法。以下示例均采用netcore3.1+mysql数据库 一、代码生成 该种方式比较简单,只适用于第一次生成,如果库中有表了,则生成失败。 这种只适用于一次性生成的,对于实际应用的项目,过程中 阅读全文
posted @ 2022-09-29 09:00 黄明辉 阅读(435) 评论(0) 推荐(0) 编辑
摘要: 往常我们二维码可能都是后端去处理,构建一个image对象,最后输出image二进制流,然后前端定义一个img 控件去展示。 但这有个弊端,就是流传输的比较大,当流量大的时候,不仅浪费流量,而且还会严重影响服务器的性能。 所以本文介绍一种方式后端只提供相关json格式的数据即可,图片在前端进行生成。 阅读全文
posted @ 2022-09-28 09:03 黄明辉 阅读(2569) 评论(0) 推荐(1) 编辑
摘要: 上一篇链接:https://www.cnblogs.com/fei686868/p/16721769.html 在上一篇中,我们介绍了CAP基于内存存储的应用。本篇我们介绍下,把存储做到mysql中,队列还是使用内存队列。 mysql中主要存储是消息的内容以及状态。 在nuget上,我们引入 Dot 阅读全文
posted @ 2022-09-26 09:03 黄明辉 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 在前面的文章中,我们介绍过 Abp自带的本地事件总线,但它有几点不足 1:缺乏失败重试机制,即若发布事件失败或者订阅事件处理失败,他没有重试机制,导致业务和数据异常。 2:缺乏对存储的支持,没有集成数据库,对事件进行存储,事件的处理都是基于内存。 下面我们介绍CAP事件总线这个组件工具,它很好的实现 阅读全文
posted @ 2022-09-23 10:46 黄明辉 阅读(1022) 评论(0) 推荐(1) 编辑
摘要: 在上一篇中,我们学习介绍了Abp本地事件的基础应用,但都没有涉及到数据库层面的执行。 在数据操作上,abp也提供了很好的事件处理机制,针对数据的增删改操作默认发布了事件,我们只需要订阅对应事件即可。 同时,在上一篇中,我们也提供了abp的订阅是非原子性的,也就是订阅端如果处理失败,是没有事务回滚或者 阅读全文
posted @ 2022-09-22 14:27 黄明辉 阅读(430) 评论(1) 推荐(0) 编辑
摘要: 事件总线,是我们在处理分布式和微服务的时候经常需要用到的,用于分布式事务解决方案。 事件总线基本就2个逻辑,1个发布事件,1个是订阅事件。 abp的本地事件是非异步的!!! abp也提供了事件总线的处理机制 下面跟着学习本地事件总线 abp官网文档地址:https://docs.abp.io/zh- 阅读全文
posted @ 2022-09-20 09:30 黄明辉 阅读(678) 评论(0) 推荐(0) 编辑
摘要: 本篇内容需要结合上一篇 https://www.cnblogs.com/fei686868/p/16625289.html 官方地址:https://docs.abp.io/zh-Hans/abp/latest/API/Dynamic-CSharp-API-Clients 在上一篇中,我们讲到了自动 阅读全文
posted @ 2022-08-25 18:24 黄明辉 阅读(581) 评论(0) 推荐(0) 编辑
摘要: 官方文档地址:https://docs.abp.io/en/abp/latest/API/Auto-API-Controllers 详细的请阅读官方文档,这边侧重简化说明怎么应用和一些注意要点。 自动API,即代码端只需要定义服务层即可,无需每一个服务层方法都对应在控制器中编写一个action。 这 阅读全文
posted @ 2022-08-25 18:11 黄明辉 阅读(909) 评论(0) 推荐(0) 编辑
摘要: 参考文章:https://zhuanlan.zhihu.com/p/439093222 https://mp.weixin.qq.com/s/zf9uqfJfRYvmSVXUQofF2A https://www.cnhackhy.com/156593.htm 互联网应用往往是高并发的场景,互联网的特 阅读全文
posted @ 2022-07-18 10:10 黄明辉 阅读(3488) 评论(0) 推荐(0) 编辑
摘要: 在我们日常的表单中,我们总需要写很多的验证,这个是避免不了的,不写,安全上过不去,写了,又很繁琐。 我们不仅前端要写验证,后端也需要写验证,才能杜绝非法数据入侵。 例如下面的代码:在服务层的保存方法中进行参数验证 var jsonCode = new JsonCode { code = -1, ms 阅读全文
posted @ 2022-07-13 14:28 黄明辉 阅读(416) 评论(0) 推荐(0) 编辑
摘要: ISoftDeleted,是abp自带的逻辑删除约定,也叫软删除。 该接口中定义了IsDeleted 变量。 命名空间为: using Volo.Abp; 它是可以实现我们对逻辑删除和硬删除的无感操作。就是我们不需要特意写代码处理,只需要调用方法即可。 在查询中,默认也会过滤掉 IsDeleted= 阅读全文
posted @ 2022-07-12 10:15 黄明辉 阅读(798) 评论(0) 推荐(0) 编辑