DbContext threading

DbContext 应该被当成一次性、串行使用的工作单元,而不是可共享的并发容器。只要一段业务里存在并行执行,就要拆成多个 DbContext 实例,不要试图让同一个实例同时跑多个 EF Core 操作。

IDisposable

IDisposable 的价值不在于“手动管理内存”,而在于为垃圾回收器看不见的资源定义一个明确的释放边界;实际使用时,优先把释放动作交给 using。

intermediate-materialization

LINQ 是否保持流式执行,关键不在查询写了几层,而在中间步骤有没有主动把序列物化成集合。只要你在自定义扩展或查询链里插入 .ToList() 这类操作,后续流程就会从“边枚举边产生结果”变成“先把上游全部拉进内存,再继续处理”。

linq-chain-queries

https://learn.microsoft.com/en-us/dotnet/standard/linq/chain-queries-example

look forward to 后接 doing

look forward to 里的 to 是介词,不是不定式符号,所以后面需要接名词性成分。想表达“期待去做某事”时,最自然的形式就是 look forward to doing。

你可能忽略的索引细节

索引不是“加上就会更快”的通用优化开关,它本质上是额外维护的一份有序数据结构:查询受益,写入和存储付费。

需要数据库吗

大多数产品的规模永远不会触及需要专用数据库的瓶颈,先从简单方案出发,等真正遇到功能需求时再升级。

自定义组件

UserControl:适合组合已有组件,在应用内部使用;

Include

设置导航属性不意味着一定要使用 Include 的方式加载数据。

使用 AI 进行组件生成

Step 1. Project Setup

event

是一种类型,表示方法签名(可指向一个或多个方法)。

使用 AI 的三种姿势

你承接了从需求到具体代码实现之间的设计,你完全了解代码的结构,异常的边界,你指导 AI 去实现具体的代码编写,从而为自己节省时间和精力。

深层嵌套的文件目录删除

在 Windows 上意外递归创建了很深层的文件目录,占用倒是不大,但是直接删除删除不掉,文件管理器报错。

Fire-and-forget Task

private static async void FireAndForgetMethod()

编译 WPF 框架

https://github.com/dotnet/wpf/blob/main/Documentation/developer-guide.md

CancellationToken

从思路上来说 CancellationToken 是 .NET 提供的一种类型,这种类型的变量被用来从一个任务的外部终止任务。

Prism的导航

从 DI 容器中获得实例的时候,需要泛型或者 Type 实例,如果直接通过类型或者 typeof 关键字获取,都会使得当前项目依赖于所需要导航到的视图所属的项目(同一个项目内是无所谓,但一旦开始模块化这就会造成耦合)。

VS C# partial property

用于 CommunityToolkit.Mvvm 的 partial property Code Snippet。

Window和UseControl生命周期

https://learn.microsoft.com/en-us/dotnet/desktop/wpf/events/object-lifetime-events

await

https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/await

double.ToString

private const double doubleVal = 10.789738975897389458937485738947857349;

persons 和 people

“People” 是 “person” 的复数形式,指一组人或一些人。“People” 是复数名词。

依赖注入容器中注册工厂

// Source - https://stackoverflow.com/a/57430389

异步音频播放

官方的 demo 中使用的是控制台程序,并通过 Console.ReadKey 来避免程序结束。

有限状态机

状态(State):系统在某一时刻所处的稳定情形

活动图

TBD

简单导航1

依赖于 CommunityToolkit.Mvvm 的简单导航。

简单导航2

不借用字符串去定位 ContentControl;

自定义 MessageBox

1. 创建一个 Window

自定义 Snackbar

1. 在应用所需显示 snackbar 的位置放置一个 ContentControl 控件作为容器(在 WPF-UI 中,这个容器是 SnackbarPresenter);

表示“保留”的单词

为防止事物被破坏、损害或变质而保护、保留它原本的状态

合并最近的提交

一般都会从主分支拉自己的分支,然后进行修改。

表示“转换”的单词

及物动词

My First Blog Post

This is the first post of my new Astro blog.