摘要:在EF Core 中进行跨表数据查询变得非常容易,但是开发人员仍然需要关注和调整 EF Core 底层生成的 SQL 语句,确保在系统的重要环节不会有明显的性能瓶颈。 [HttpGet("query/{message}")] public async Task<ActionResult<IEnume
阅读全文
摘要:一对多和一对一都只需要在表中增加外键列,但是在多对多关系中,我们必须引入一张中间表保存两张表之间的关联关系。 多对多:不需要声明中间表实体,也不需要声明外键。 实体: public class Teacher { public long Id { get; set; } public string
阅读全文
摘要:一个订单对应一个快递信息 在一对多关系中,EF Core 会自动在多端的表中生成一个指向一端的外键列,不需要我们显式地声明外键属性。但是在一对一关系中,必须显式地在其中一个实体类中声明一个外键属性。 实体类: /// <summary> /// 订单 /// </summary> public cl
阅读全文
摘要:错误: 当两个类中的属性互相引用时,导致对象实例序列化成Json时死循环,错误如下: System.Text.Json.JsonException: A possible object cycle was detected. This can either be due to a cycle or
阅读全文
摘要:一对多 单向导航属性 实体类: /// <summary> /// 用户 /// </summary> public class User { public long Id { get; set; } /// <summary> /// 姓名 /// </summary> public string
阅读全文
摘要:EF Core 支持一对多、多对对、一对一 关系。 一篇文章 Article 包含多条评论 Comment Article(1)——》Comment(1,2,3...) 对于主从结构的“一对多”表关系,我们一般声明为双向导航属性,对于其它的“一对多”,则需根据情况决定使用单向导航属性还是双向导航属性
阅读全文
摘要:插入数据后,导航到 GetByName 方法: [HttpPost("Create")] public async Task<ActionResult> Create() { User u1 = new User { Name = "杨中科" }; Leave leave = new Leave()
阅读全文
摘要:查看EF Core 执行时生成的Sql语句 在DbContext上下文中添加以下代码,在程序操作数据库时,就能在控件台看到Sql语句。 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { op
阅读全文
摘要:EF Core 除了用数据注释 Data Annotation 对实体类进行配置之外,还提供了Fluent API 的方式 对实体类进行配置。 Fluent API 优势: 1. 能够更好的进行职责分离。实体类只负责抽象描述,不涉及和数据库相关的细节,所有数据库相关的细节都放到配置类中,这样我们能更
阅读全文
摘要:一、appsetting.json 声明连接字符串 "ConnectionStrings": { "DefaultConnection": "Server=DESKTOP-DABHN6U\\MSSQLSERVER2014;uid=sa;pwd=Lz38275292;database=SPA;Mult
阅读全文
摘要:以下代码在”程序包管理控件器“窗口执行,且必须添加:Microsoft.EntityFrameworkCore.Tools 包 初始化并且创建迁移: add-migration InitialCreate 命令行方式: dotnet ef migrations add Added_TodoItem
阅读全文
摘要:查看仓库的版本 https://hub.docker.com/_/rabbitmq 1. 拉取镜像 docker pull rabbitmq 2. 启动容器 docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -v /home/rabb
阅读全文
摘要:集成事件用于在微服务之间进行事件的传递,服务器之间的通信,必须借助第三方服务器作为事件总线。 一般使用消息中间件作为事件总线,常用的消息中间件有:Redis、RabbitMQ、Kafka、ActiveMQ 等。 RabbitMQ 中的几个基本名词: 信道(channel):信道是消息的生产者、消费者
阅读全文
摘要:appsettings.json配置Serilog { //"Logging": { // "LogLevel": { // "Default": "Information", // "Microsoft.AspNetCore": "Warning" // } //}, "Serilog": { "
阅读全文
摘要:为了避免多个用户同时操作同一个资源造成的并发冲突问题,通常需要进行并发控制。 并发控制分为:乐观和悲观两策略 悲观:悲观并发控制一般采用行锁、表锁等 排它销对资源进行锁定,确保一个时间点只有一个用户在操作被锁定的资源。 悲观并发控件的使用比较简单,仅对要进行并发控制的资源加上锁即可,但是这种锁是独占
阅读全文
摘要:{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "ConnectionStrings": { "DefaultConn
阅读全文
摘要:在代码中手动读取配置文件 : //在代码中手动读取配置文件 public class ReadConfig { /// <summary> /// 读取配置文件,默认读:appsettings.json /// </summary> /// <param name="nodeName">节点,多层节
阅读全文
摘要:https://jwt.ms/ 解码令牌 通用数据库工具 https://dbeaver.io/ crontab执行时间计算 https://cron.ciding.cc/ 草料二维码生成工具 https://cli.im/ 深信服 VPN
阅读全文
摘要://验证传入的令牌以确保它来自受信任的颁发者 //验证令牌是否可以与此 api 一起使用(又名受众) //将身份验证服务添加到 DI(依赖注入)并将身份验证中间件添加到管道 builder.Services.AddAuthentication("Bearer") .AddJwtBearer("Bea
阅读全文
摘要:打开PowseShell执行以下命令 dotnet new -i IdentityServer4.Templates
阅读全文
摘要:namespace WebMVC.Infrastructure; public static class API { public static class Purchase { public static string AddItemToBasket(string baseUri) => $"{b
阅读全文
摘要:创建对应的映射类: public class AppSettings { //public Connectionstrings ConnectionStrings { get; set; } public string PurchaseUrl { get; set; } public string
阅读全文
摘要:appsettins.json 中的 Redis 连接字符串 "ConnectionStrings": { "DefaultConnection": "Server=DESKTOP-DABHN6U\\MSSQLSERVER2014;uid=sa;pwd=Lz38275292;database=New
阅读全文
摘要:在文件 add-firewall-rules-for-sts-auth-thru-docker 上点右键,使用PowerShell运行.(文件 在163邮箱的:Docker工具)
阅读全文
摘要:现在Docker Desktop默认使用WSL 2来运行,而不是以前的Hyper-V。 WSL WSL:适用于 Linux 的 Windows 子系统。 Windows版本(Windows 10)WSL 2 版本 docker 默认程序安装到c盘,数据存放于 C:\Users\当前用户名\AppDa
阅读全文
摘要:查看 Docker 当前使用的 Linux 版本,在 PowerShell 终端执行以下命令: wsl --list --running 重启 WSL 2 分发Linux,注意重启后,Docker 也要跟着重启 wsl --shutdown
阅读全文
摘要:微软官方学习资料 https://dotnet.microsoft.com/zh-cn/
阅读全文
摘要:eShopOnContainers 应用是一家网上商店,这家店销售各种产品,包括大头针、T 恤和咖啡杯。 该商店包括以下功能: 目录管理 购物车 用户管理 订单管理 支付 优惠券管理(在关系图中有显示,但尚不存在) 可以使用不同的微服务管理上述每项功能。 每个微服务都享有自主权、可独立部署,且负责其
阅读全文
摘要:身份验证授权 IdentityServer4 https://identityserver4.readthedocs.io/en/latest/quickstarts/1_client_credentials.html
阅读全文
摘要:Kubernetes 的一大好处是支持声明性配置管理。 你在配置文件中定义的服务会不惜一切代价进行保留。 这意味着,如果出现故障,Kubernetes 将自动重启在发生故障之前运行的服务。 让我们通过删除披萨前端 Pod,然后验证 Kubernetes 是否已重启它,来看看此恢复能力如何发挥作用。
阅读全文
摘要:在一天中的某些时间,微服务可能会负载很大。 Kubernetes 通过为你添加额外的实例来轻松缩放微服务。 运行以下命令,将后端微服务缩放为五个实例。 kubectl scale --replicas=5 deployment/pizzabackend 我们需要指定“deployment/pizza
阅读全文
摘要:将 Docker 映像推送到 Docker Hub,使映像可供 Kubernetes 实例下载,然后创建了部署文件,以声明方式描述了 Kubernetes 应对每个微服务执行的操作。 你还了解到,使用 Kubernetes 缩放容器化微服务的过程其实很简单。 在基于微服务的开发方法中,每个微服务都有
阅读全文
摘要:登录到 Docker Hub 将映像上传到 Docker Hub 的下一步是登录 Docker Hub。 在命令提示符处,输入下列内容: docker login 将映像上传到 Docker Hub 输入以下代码以重新标记或重命名在 Docker 用户名下创建的 Docker 映像。 docker
阅读全文
摘要:在基于微服务的开发方法中,每个微服务都有自己的模型和数据,因此从开发和部署角度来看,它具有自主性,独立于其他微服务。 在容器内部托管微服务是实现此目的的常见方法。 这些类型的系统在扩展和管理方面很复杂。 你需要考虑整理、添加、删除和更新多个容器的过程。 这个过程称为容器管理。 为了帮助处理容器管理任
阅读全文
摘要:在 appsetting.json 中配置基础连接 Url "backendUrl": "https://localhost:5901" 封装客户端访问类 using System.Net.Http; using System.Text.Json; using System.Threading.Ta
阅读全文
摘要:Docker Compose : 将多个 Docker 映像作为一个单元一起生成,然后部署该单元。 Docker Compose 文件是一个 YAML 文件,用于将多个 docker 容器组合在一起以进行生成和部署。 创建 docker-compose 文件 使用 Visual Studio Cod
阅读全文
摘要:在项目上点右键,创建 Dockerfile 文件。 #拉取 mcr.microsoft.com/dotnet/sdk:6.0 镜像并将其别名设置为 build FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build #将镜像中的工作目录设置为 /src WORK
阅读全文
摘要:Docker Desktop 安装包下载 https://docs.docker.com/desktop/install/windows-install/ 基础镜像 https://hub.docker.com/ Docker 从入门到实践 https://yeasy.gitbook.io/dock
阅读全文
摘要:Docker 包括三个基本概念 镜像(Image) 容器(Container) 仓库(Repository) 理解了这三个概念,就理解了 Docker 镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器
阅读全文
摘要:https://hub.docker.com/ 基础镜像 Dockerfile:自动化脚本,用来创建镜像。 Image(镜像):指部署的应用程序以及所依赖的全部库。 Container(容器):利用镜像创建的运行实例,实例之间互相隔离。容器相当于一台台的虚拟机。
阅读全文
摘要:一、创建型 单例(Singleton) 工厂模式 简单工厂(Simple Factory) 工厂方法(Factory Method) 抽象工厂(Abstract Factory) 生成器(Builder) 原型模式(Prototype) 二、行为型 责任链(Chain Of Responsibili
阅读全文
摘要:在SQL标准中定义了四种隔离级别,每一种级别都规定了一个事务中所做的修改,哪些是在事务内和事务间可见的,哪些是不可见的。较低级别的隔离通常可以执行更高的并发,系统的开销也更低。 1、未提交读(Read uncommitted) 在未提交读级别,事务中的修改,即使没有提交,对其他事务也都是可见的。事务
阅读全文
摘要:简述.net core中间件? A:中间件是在管道中处理请求的组件,处理完后可以传递给下一个组件。通过在Startup类的Configure方法中使用Use来使用中间件并可以调整顺序。.NET CORE中使用RequestDelegate来构建管道模型,所以自定义的中间件需要根据约定来实现,注意有三
阅读全文
摘要:去除字符串中连续空格,多个空格变为一个? A:使用正则匹配之后替换: str = Regex("[\\s]+").Replace(str, " "); 在线生成正则表达式 https://ihateregex.io/日期时间正则表达式: /// <summary> /// 根据字符串,生成实例 //
阅读全文
摘要:行转列,表1:源数据,表2:转换后的数据 select Name, sum(case Subject when '语文' then Score else 0 end) as '语文', sum(case Subject when '数学' then Score else 0 end) as '数学'
阅读全文
摘要:什么是微服务体系结构? 正如名称所示,微服务体系结构是一种将大型应用程序分解为一组较小的服务的方法。 每个服务都在自己的进程中运行,并使用 HTTP/HTTPS、WebSocket 或 AMQP 等协议与其他进程进行通信。 每个微服务在特定的上下文边界内实现特定的端到端域或业务功能,每个微服务都必须
阅读全文
摘要:Docker Docker 是一种开源项目,可将应用程序的部署自动化,将应用程序部署为可在云或本地运行的可移植独立容器。 容器扮演什么角色? 容器化是软件开发的一种方法,通过该方法可将应用程序或服务、其依赖项及其配置(抽象化为部署清单文件)一起打包为容器映像。 可以将容器化应用程序作为一个单元进行测
阅读全文
摘要:创建订阅类: using StackExchange.Redis; namespace TestWebApplication.BackgroundTasks { /// <summary> /// Redis 订阅者,长时间运行的后台服务 /// </summary> public class Re
阅读全文
摘要:https://docs.automapper.org/ 基于约定的对象-对象映射器。100% 有机和无麸质。消除将一个对象映射到另一个对象的所有麻烦。 什么是 AutoMapper? AutoMapper 是一个简单的小库,旨在解决一个看似复杂的问题——摆脱将一个对象映射到另一个对象的代码。这种类
阅读全文
摘要:通过NuGet 安装 Microsoft.Extensions.Caching.StackExchangeRedis 组件 在 Program.cs 的 builder.Build() 之前注册 IDistributedCache 服务 string redisConnection = builde
阅读全文
摘要:对于ASP.NET Core MVC 项目,框架会自动注入内存缓存服务。对于 ASP.NET Web API 等需要手动注入内存缓存服务。 注入内存缓存服务: builder.Services.AddMemoryCache();//注入内存缓存服务 内存缓存工具类接口: using Microsof
阅读全文
摘要:集中管理依赖注入 using AnotherWayToImplementRedis.Interfaces; using AnotherWayToImplementRedis.Repositories; namespace AnotherWayToImplementRedis.Configuratio
阅读全文
摘要:Nuget引用组件: Microsoft.EntityFrameworkCore.Design Microsoft.EntityFrameworkCore.SqlServer Microsoft.EntityFrameworkCore.Tools 连接字符串 appsetting.json "Con
阅读全文
摘要:缓存更新策略:先操作数据库,再删除缓存 缓存穿透:缓存空对象 缓存雪崩:给不同的Key 在原有时间基础上增加随机过期值
阅读全文
摘要:.Net Core 推荐Redis组件: Microsoft.Extensions.Caching.StackExchangeRedis 启用Redis服务:redis-server.exe 进入Redis控件台:D:\Program Files\Redis\redis-cli.exe Redis常
阅读全文
摘要:安装: 1.NuGet中添加 OnceMi.AspNetCore.IdGenerator 程序集 2.Program中设置参数 //AppId,Appid范围为0-63 builder.Services.AddIdGenerator(m => { m.AppId = 1; }); 3.获取ID [A
阅读全文
摘要:WSL2(Windows Subsystem for Linux 2 的简称)Win系统中的Linux内核 安装 WSL 命令 您可以通过在管理员PowerShell 或 Windows 命令提示符中输入此命令 wsl --install 此命令将启用运行 WSL 和安装 Linux 的 Ubunt
阅读全文