刷新
简单来讲讲C#中的锁

博主头像 简单来讲讲C#中的锁 ✨ 前言 今天来说说C#中的锁,锁在日常开发中还是很常用的,但是用的不得当,或者骚操作比较多那么就会导致死锁,从而导致系统崩溃。 后面我会出一系列文章,来讲讲C#里面的代码和技巧,通过不断的学习积累,以达到我的跳槽目标。 文章中有任何错误的地方都可以指出,博主也在不断的学 ...

【EF Core】再谈普通实体关系与 Owned 关系的区别

博主头像 在很多个世纪前,老周曾写过实体之间普通关系(一对一,一对多,多对多)与 Owned 关系的区别。不过,那次写得比较粗浅,逼格不够高,于是,老周厚着脸皮地决定重新写一下。 首先,为什么这次老周用原单词 Owned 呢,官方文档目前的翻译(怀疑是机器干的)为“从属”,这种说法与普通关系数据库中一对多、多 ...

推荐一款线程or进程间数据同步解决方案

博主头像 在实际开发中,数据同步非常重要,特别是跨线程或者进程之间数据交互的时候,如果不能进行数据同步管理,那各个线程或者进程之间就会产生数据错乱问题,比如A程序用的是更新之前的数据,B数据用的是更新之后的数据,这会造成很严重的后果。今天我们以一个简单的小例子,介绍一款线程or进程之间数据同步的解决方案,谨供... ...

【EF Core】实体类的依赖注入

博主头像 在使用外部模型那篇水文中,有大伙伴提出:老周,你那个 Ultraman 类和 Speciality 类的的关系是不是有问题,外键不应该在 Speciality 类上吗,怎么会跑到 Ultraman 类上?因为它们是一对一关系,在配置的时候你也可以反过来,主要区别是谁引用谁的问题,由于是一对一引用,所 ...

【EF Core】优化后的模型

博主头像 本文所讲述内容,大伙伴们不必要完全掌握,毕竟,dotnet ef 工具会帮助咱们生成相关代码。不过,为了让各位能够真正了解它,老周会做一次纯手搓代码。 所谓优化后的模型,相当于把实体的配置进行“硬编码”,程序会执行更少的代码来提升效率。放到实际代码编写上,这个活叫运行时模型,对应的类就是 Runti ...

推荐一款代码规范检查(CodeReview)神器

博主头像 在实际项目开发中,越是复杂的项目,越是需要很多人协同完成,每一个人根据职责分工不同,负责不同的模块。在这个过程中,由于每一个人的工作经历不同,在不同的职场环境中,会形成不同的编码习惯,比如有人喜欢驼峰命名方式,有人喜欢帕斯卡命名方式,还有人喜欢用下划线分隔单词,更有甚者,有的人喜欢随意命名,那在整个... ...

【EF Core】使用外部 Model

博主头像 对于模型的配置,98.757%的情况下,我们使用“数据批注”特性类,或者 Fluent API (重写 DbContext 类的 OnModelCreating 方法)进行配置即可。但在少数情况下,可能会考虑在 DbContext 之外配置模型。比如: 你的实体类和模型,以及 DbContext 派 ...

推荐一款高性能状态机管理解决方案

博主头像 在实际软件开发中,尤其是工业软件,每一款设备都有复杂的状态以及状态之间的切换的功能需求,在这种情况下,如何管理状态以及状态之间切换,和对应状态下的功能控制,成为非常重要的一个问题。如果处理不好,那这种繁复的状态将成为“像面条一样”缠绕耦合,一团乱麻,真的就是“剪不断,理还乱”。那如何解决这个问题呢?... ...

【EF Core】聊聊“复合”属性

博主头像 复合(或复杂)属性,即 Complex Property,怎么理解呢?这是相对于常见的基础类型,比如 string、int、byte、long 等类型的属性就是基础类型值,而由多个基础类型构成的类型就是复合类型(当然,复合类型的属性也可以其他复合类型,这里就不套娃了)。 比如,某顿饭由米饭、菜、肉、 ...

String与string的区别

博主头像 C#是区分大小写的,但是我却发现C#中同时存在String与string,于是我很困惑,于是我上网搜索了一下,于是我了解了一些小知识。 MSDN中对string的说明:string is an alias for String in the .NET Framework。string是String的 ...

推荐一款进程间高速交换数据的解决方案

博主头像 在实际开发中,一款应用可能有多个应用程序组成,那这款应用各个组成部分之间的数据交互就成了关键,如何才能快速高效的进行数据交互呢?如果是跨服务器的进程交互,可以采用Remoting,WCF,GRPC等远程过程调用技术(RPC),这种方式会经过网卡进行网络传输,存在一定的数据转换及网络传输等性能消耗。如... ...

【EF Core】带主键实体与无主键实体

博主头像 上一次老周已介绍了 EF Core 框架自动发现实体和实体成员的原理。涉及到对源码的分析,可能大伙伴们都看得气压升高了。故这一次老周不带各位去分析源码了,咱们聊一聊熟悉又陌生的关键词——主键。说它熟悉,是因为只要咱们创建数据表,99%会用到;说它陌生,是指在 EF Core 中与主键相关的细节。 P ...

推荐一款基于.NET的进程间通信框架

博主头像 在Windows操作系统中,每一个应用程序都是相互独立的,它们拥有独立的内存空间,各个应用程序之间形成一道边界,不能互相访问和操作,这是操作系统为了保护应用程序的安全而设计的。这种看似“井水不犯河水”的设计同样有它的弊端,假如两个应用程序需要相互协作配合才能完成工作,那它们就需要进行通信和数据交互,... ...

.Net Minimal APIs实现动态注册服务

博主头像 .Net Minimal APIs实现动态注册服务 前言 dotnet Minimal APIs实现动态注册端点 上一篇文章讲解了在.Net Minimal APIs如何动态注册端点,这篇文章来讲解一下如何动态注册服务 文件层级结构如下: SharpIcoWeb ├── Endpoints │ ├─ ...

dotnet Minimal APIs实现动态注册端点

博主头像 dotnet Minimal APIs实现动态注册端点 前言 之前使用.Net的Minimal Apis框架开发了SharpIcoWeb图片转ico项目,也是初次使用这个最小Api框架,使用下来的感受就是小项目用起来非常舒服,很轻量。 在之前的项目中,我都是手动去注册端点,比如我创建了一个端点类Ic ...

【EF Core】框架是如何识别实体类的属性和主键的

博主头像 在上一篇水文中,老周生动形象地解释了 DbContext 是如何识别实体 Set 的,大伙伴们可能会产生新的疑惑:实体是识别了,但,实体的属性或字段列表,它是怎么识别并映射给数据表的列的呢? 用过 EF 的人都知道(废话),其实默认情况下,实体类中只要不是静态的属性和字段都会被映射到数据表中,就算你 ...

SOD框架使用金仓数据库“踩坑记”

博主头像 SOD框架使用金仓数据库“踩坑记”,严格来说是使用金仓数据库过程的踩坑记,并不是使用SOD框架来访问金仓数据库才会发生的问题,SOD框架的网友多年前就封装了人大金仓(现在已经改名为“电科金仓”)和达梦数据库的SOD框架数据提供程序,对应的Nuget包名字分别是 PDF.NET.SOD.Dameng. ...

<123···6>