#602 – April 05, 2026
not every AI feature needs a dedicated vector database
Getting started with PgVector in .NET for simple vector search
8 minutes by Milan Jovanović
Not every AI feature needs a dedicated vector database. pgvector is a PostgreSQL extension that adds vector storage and similarity search directly to your existing database. You enable the extension, create a vector column, and start querying. In this post Milan shows you what vector search is and when you need it, he walks you through provisioning pgvector with .NET Aspire and Ollama, generating embeddings with MEAI and storing with Dapper and querying by semantic similarity using cosine distance.
There Are Monsters Inside This Low-Level Book About Processors
sponsored by Kevin Focke
TUnit now captures OpenTelemetry traces in test reports
5 minutes by Tom Longhurst
TUnit now captures OpenTelemetry traces directly inside its HTML test reports. When a test runs against an ASP.NET Core app, spans from database queries, HTTP calls, and middleware all appear as a timeline next to the test result. Setup takes one NuGet package and two base classes. Tom says this makes failures easier to diagnose since instead of guessing, you can see exactly what the app did during the failing test.
Generic EqualityComparer for classes in C#
12 minutes by Tore Aurstad
C# classes use reference equality by default, meaning two objects with the same data are not considered equal. GenericEqualityComparer fixes this by comparing class instances by their property and field values instead. It uses reflection at startup to build fast compiled delegates, and supports public and private members. Tore suggests to avoid it in performance critical loops, and he prefers built-in equality for records and structs.
How to seed data to EF Core
6 minutes by Ricardo Peres
There are four main ways to seed data in EF Core. You can insert data explicitly in code, write a data-only migration with raw SQL, declare seed data inside entity configuration using HasData, or register seeding callbacks with UseSeeding and UseAsyncSeeding. Ricardo points out that each approach suits different needs: HasData works best for small fixed datasets, migrations for one-time SQL inserts, and UseSeeding for flexible logic that runs with both migrations and EnsureCreated.
URL pattern matching in .NET
2 minutes by Gérald Barré
Working with URLs in .NET applications often involves pattern matching for routing, security policies, or content filtering. While you could write custom regex patterns or string comparisons, Gérald argues there's a better way: the Meziantou.Framework.Uri package brings standardized URL pattern matching to .NET. This package implements the WHATWG URL Pattern API specification, providing a consistent and powerful way to match URLs against patterns with parameters, wildcards, and modifiers.
And the most popular article from the last issue was: