nuget

深入理解 EF Core:使用查询过滤器实现数据软删除

浪尽此生 提交于 2020-10-03 04:01:17
原文: https://bit.ly/2Cy3J5f 作者:Jon P Smith 翻译:王亮 声明:我翻译技术文章不是逐句翻译的,而是根据我自己的理解来表述的。其中可能会去除一些本人实在不知道如何组织但又不影响理解的句子。 这篇文章是关于如何使用 EF Core 实现软删除的,即表面上删除了数据,但数据并没有被物理删除,在需要的时候你还是可以把它读取出来的。软删除有很多好处,但也有一些值得注意的问题。这篇文章会教你使用 EF Core 实现一般的软删除和复杂的级联软删除。在此过程中,我还会介绍如何编写可重用代码来提高软删除解决方案的开发效率。 我假设你对 EF Core 已经有了一定的认识。但在真正讲软删除实现的方案之前,我们先来了解一下如何使用 EF Core 实现删除和软删除的一些基本知识。 本文是“深入理解 EF Core”系列中的第三篇。以下是本系列文章列表: 深入理解 EF Core:当 EF Core 从数据库读取数据时发生了什么? 深入理解 EF Core:当 EF Core 写入数据到数据库时发生了什么? 深入理解 EF Core:使用查询过滤器实现数据软删除(本文) 概要 ∮. 你可以使用全局查询过滤器(现在称为查询过滤器)为你的 EF Core 应用程序添加软删除功能。 ∮. 在应用程序中使用软删除的主要好处是可以恢复无意的删除和保留历史记录。 ∮.

.NET 合并程序集(将 dll 合并到 exe 中)

只谈情不闲聊 提交于 2020-10-03 03:06:18
背景:我们的应用程序通常都是由多个程序集组成,例如一个 exe 程序依赖于多个 dll 程序集。在某些情况下,我们希望程序的分发能够简单,单独一个 exe 就能正常运行。这种情况下,就需要将 dll 依赖项合并到 exe 主程序中。 本文章给大家讲下非常好用的 NuGet 包,Costura.Fody 1.第一步:通过 NuGet 安装 Costura.Fody 和 Fody Costura.Fody 是 Fody 中的工具(加载项)之一,通常情况下只需安装前者即可,后者会自动安装。 这这边先添加一个Newtonsoft.Json的包做实验,让结果看到更明显,后面有后面有生成前后的对比 第二步:添加 FodyWeavers.xml 文件 <?xml version="1.0" encoding="utf-8" ?> <Weavers> <Costura> <ExcludeAssemblies> Foo Bar </ExcludeAssemblies> </Costura> </Weavers>    第三步:编译项目 编译你的项目,看一下Debug输出目录, dll 是不是合并了 普通生成: Costura.Fady生成: 从两张图片我们可以发现Newtonsoft的相关文件已经合并了,WindowsFormsApp1.exe的大小也发生了变化,从9KB变成了270KB 第四步

如何在 asp.net core 的中间件中返回具体的页面

自古美人都是妖i 提交于 2020-10-03 03:04:56
前言 在 asp.net core 中,存在着中间件这一概念,在中间件中,我们可以比过滤器更早的介入到 http 请求管道,从而实现对每一次的 http 请求、响应做切面处理,从而实现一些特殊的功能 在使用中间件时,我们经常实现的是鉴权、请求日志记录、全局异常处理等等这种非业务性的需求,而如果你有在 asp.net core 中使用过 swashbuckle(swagger)、health check、mini profiler 等等这样的组件的话,你会发现,这些第三方的组件往往都提供了页面,允许我们通过可视化的方式完成某些操作或浏览某些数据 因为自己也需要实现类似的功能,虽然使用到的知识点很少、也很简单,但是在网上搜了搜也没有专门介绍这块的文档或文章,所以本篇文章就来说明如何在中间件中返回页面,如果你有类似的需求,希望可以对你有所帮助 Step by Step 最终实现的功能其实很简单,当用户跳转到某个指定的地址后,自定义的中间件通过匹配到该路径,从而返回指定的页面,所以这里主要会涉及到中间件是如何创建,以及如何处理页面中的静态文件引用 因为这块并不会包含很多的代码,所以这里主要是通过分析 Swashbuckle.AspNetCore 的代码,了解它是如何实现的这一功能,从而给我们的功能实现提供一个思路 在 asp.net core 中使用 Swashbuckle

IdentityServer4 4.x版本 配置Scope的正确姿势

旧时模样 提交于 2020-10-02 21:59:23
前言 IdentityServer4 是为ASP.NET Core系列量身打造的一款基于 OpenID Connect 和 OAuth 2.0 认证的框架 IdentityServer4官方文档: https://identityserver4.readthedocs.io/ 看这篇文章前默认你对IdentityServer4 已经有一些了解。 本篇使用IdentityServer4的4.x版本,跟老版本的稍微有些差别。下面直接进入正题。 鉴权中心 创建IdentityServer4项目 使用IdentityServer4 来搭建一个鉴权中心,首先建议安装一下IdentityServer4的官方项目模板。也可以不安装,自己创建项目,然后NuGet安装需要的包也行。(不过还是推荐用官方的模板,很方便)。 命令行执行: dotnet new -i IdentityServer4.Templates 安装完成后会多出以下项目模板: 我这里选用is4inmem这个模板来创建项目,这个模板的数据都是写死在内存中的,并且包含了Quickstart页面,比较简单方便。 来到我的项目目录下执行: dotnet new is4inmem --name Idp 执行完成会生成以下文件: VS2019打开项目: 运行项目: 配置ApiResource、ApiScope、Clients 修改Startup

ASP.Net Core 3.1 中使用JWT认证

痞子三分冷 提交于 2020-10-02 13:20:50
JWT认证简单介绍 关于Jwt的介绍网上很多,此处不在赘述,我们主要看看jwt的结构。 JWT主要由三部分组成,如下: HEADER.PAYLOAD.SIGNATURE HEADER 包含token的元数据,主要是加密算法,和签名的类型,如下面的信息,说明了 加密的对象类型是JWT,加密算法是HMAC SHA-256 {"alg":"HS256","typ":"JWT"} 然后需要通过BASE64编码后存入token中 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 Payload 主要包含一些声明信息(claim),这些声明是key-value对的数据结构。 通常如用户名,角色等信息,过期日期等,因为是未加密的,所以不建议存放敏感信息。 {"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name":"admin","exp":1578645536,"iss":"webapi.cn","aud":"WebApi"} 也需要通过BASE64编码后存入token中

在微服务框架Demo.MicroServer中添加SkyWalking+SkyApm-dotnet分布式链路追踪系统

冷暖自知 提交于 2020-10-02 11:21:49
1.APM工具的选取 Apm监测工具很多,这里选用网上比较火的一款Skywalking。 Skywalking是一个应用性能监控(APM)系统,Skywalking分为服务端Oap、管理界面UI、以及嵌入到程序中的探针Agent部分,大概工作流程就是在程序中添加探针采集各种数据发送给服务端保存,然后在UI界面可以看到收集过来的各种监测数据,来完成它的核心使命:性能监控和分布式调用链追踪能力。下图是skywalking官方的一个图,也可以说明这三者之间的关联关系 2.服务端(OAP)和界面(UI)的安装 这里直接在apache地址: http://skywalking.apache.org/downloads/ 下载了一个6.6.0版本的zip文件,由于之前在本地的windows上安装过,发现安装包里面有两个启动文件,分别为:startup.bat和startup.sh,分别用于window上启动和linux启动,这里我直接将之前下载好的上传到linux上来安装。 上传后解压缩,就会得到以下截图的几个文件 进入到config配置目录下面,有一个名称叫application.yml的文件 对这个配置文件进行编辑 vim application.yml 我们直接定位到数据存储部分,也就是节点storage,官方文档里面也有说明,为了方便快速入门,配置文件默认采用的是H2存储

使用Topshelf部署.net core windows服务

生来就可爱ヽ(ⅴ<●) 提交于 2020-10-02 08:43:18
使用Topshelf部署.net core windows服务 首先新建一个.net core的模板worker程序 过程 略 打开Program.cs namespace TopshelfDemo { public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureServices((hostContext, services) => { services.AddHostedService<Worker>(); }); } } nuget 安装Topshelf 略 改写下Program.cs public class Program { public static void Main(string[] args) { HostFactory.Run(x => { x.Service<IHost>(s => { s.ConstructUsing(() => CreateHostBuilder(args).Build()); s

基于 abp vNext 和 .NET Core 开发博客项目

本秂侑毒 提交于 2020-10-01 10:06:26
系列文章 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目 基于 abp vNext 和 .NET Core 开发博客项目 - 给项目瘦身,让它跑起来 基于 abp vNext 和 .NET Core 开发博客项目 - 完善与美化,Swagger登场 基于 abp vNext 和 .NET Core 开发博客项目 - 数据访问和代码优先 基于 abp vNext 和 .NET Core 开发博客项目 - 自定义仓储之增删改查 基于 abp vNext 和 .NET Core 开发博客项目 - 统一规范API,包装返回模型 基于 abp vNext 和 .NET Core 开发博客项目 - 再说Swagger,分组、描述、小绿锁 基于 abp vNext 和 .NET Core 开发博客项目 - 接入GitHub,用JWT保护你的API 基于 abp vNext 和 .NET Core 开发博客项目 - 异常处理和日志记录 基于 abp vNext 和 .NET Core 开发博客项目 - 使用Redis缓存数据 基于 abp vNext 和 .NET Core 开发博客项目 - 集成Hangfire实现定时任务处理 基于 abp vNext 和 .NET Core 开发博客项目 - 用AutoMapper搞定对象映射 基于 abp

C#/VB.NET在Excel中添加筛选器并执行筛选

天涯浪子 提交于 2020-09-30 13:30:49
本文介绍通过C#和VB.NET程序在Excel文档中添加筛选器并执行筛选的方法。 需要使用Excel类库工具 Free Spire.XLS for .NET (免费版),可通过官网 下载包 ,解压安装到指定路径,完成安装后,将安装路径下Bin文件夹下的Spire.Xls.dll文件添加引用到VS程序;或者可通过 Nuget搜索下载 。 dll文件引用效果如下: Excel测试文档如下,包含多个数据列表,下面将通过代码筛选指定数据: C# using Spire.Xls; using Spire.Xls.Collections; namespace Filter_XLS { class Program { static void Main(string[] args) { //创建Workbook对象,加载Excel文档 Workbook workbook = new Workbook(); workbook.LoadFromFile("test.xlsx"); //获取第一个工作表 Worksheet sheet = workbook.Worksheets[0]; //添加筛选器,并执行筛选 AutoFiltersCollection filters = sheet.AutoFilters;//获取筛选器集合 filters.Range = sheet.Range[1, 2,

微软即将发布的.NET 5,蕴藏哪些最新特性?

自闭症网瘾萝莉.ら 提交于 2020-09-30 07:23:46
作者 | Paul Krill 编译 | 郑丽媛 头 图 | CSDN 下载自 视觉中国 出品 | CSDN(ID:CSDNnews) 以下为译文: 为了统一.NET平台,.NET 5改进了RyuJIT中代码质量、垃圾收集和JSON序列化等功能。 Preview 8 微软已经发布了功能完整的.NET 5的第8个预览版,除了bug修复外,几乎所有的功能都是最终版本。 .NET 5中 .NET Framework和.NET Core已合并,旨在一统.NET平台。 最新版本预计将于2020年11月10日正式发布。 日前,.NET 5的第8个预览版在8月25号已发布。而在11月的正式版发布前,还将有两个候选版本发布。 .NET 5更高层次的目标包含提供统一的.NET SDK体验,即在所有.NET 5应用程序中使用一个BCL(基类库),并支持跨多个操作系统的本地和web应用程序。一个.NET 5本地应用程序项目将使用这些平台上的本地控件来支持Windows、Microsoft Duo (Android)和Apple iOS等目标。 .NET 5的其他目标还有:允许构建高性能的云应用程序、在BCL中实现更快的算法、运行时中为容器提供更好地支持、以及对HTTP3的支持。.NET 5.0通过Mono的运行时和.NET库,将支持WebAssembly二进制格式,还提供了一组可为空的引用类型注释。