Find your next readFilters
Reset

Fixing the Site's Search: PostgreSQL Full-Text Search (and Where It Breaks)

Search is one of those features everyone underestimates. It looks trivial until real users start typing real queries -acronyms, half-remembered technical terms, punctuation-heavy names like "ASP.NET", or searches that are conceptually right but textually…

Data Hierarchies Part 1.5: PostgreSQL ltree with EF Core

PostgreSQL's ltree extension gives you materialised paths with database-native superpowers: GiST indexes, specialised operators like @> and <@, and powerful pattern matching. If you're committed to PostgreSQL and want the best hierarchy query performance,…

Data Hierarchies Part 1.4: Nested Sets with EF Core

Nested sets encode the entire tree structure into just two integers per node - Left and Right boundaries from a depth-first walk. Finding all descendants becomes a simple range query, and ORDER BY Left gives you perfect display order. The catch? Every insert…

Data Hierarchies Part 1.3: Materialised Path with EF Core

Materialised paths store the complete ancestry as a delimited string - like /1/3/7/ - making ancestors instantly readable without any joins. Perfect for breadcrumb generation and human-readable debugging, though moving subtrees means updating every…

Data Hierarchies Part 1.2: Closure Table with EF Core

Closure tables precompute and store every ancestor-descendant relationship, trading storage space for blazing-fast reads. This is the approach this blog uses for its comment system - when reads vastly outnumber writes, the extra insert complexity pays off with…

Data Hierarchies Part 1.1: Adjacency List with EF Core

The adjacency list is the simplest and most intuitive approach to storing hierarchical data - each row just points to its parent. It's what most developers reach for first, and for shallow trees with frequent moves, it's often the right choice. This article…

Data Hierarchies: Managing Hierarchical Data with EF Core and PostgreSQL (Overview)

Hierarchical data is everywhere in software development: threaded comments, organisational charts, file systems, product categories, and forum discussions. The eternal question of "how do I store a tree in a relational database?" has haunted developers since…

Data Access in .NET: Comparing ORMs and Mapping Strategies (Part 2 - Dapper, Raw SQL, and Hybrid Approaches)

Welcome to Part 2 of our comprehensive guide to data access in .NET! In Part 1, we explored Entity Framework Core in depth, including SQL generation, common pitfalls, and that critical warning about proxies and caching. In this article, we'll explore the…

Data Access in .NET: Comparing ORMs and Mapping Strategies (Part 1 - Entity Framework Core)

When building .NET applications, one of the most important architectural decisions you'll make is how to handle data access and object mapping. The .NET ecosystem offers a rich variety of approaches, from full-featured ORMs to bare-metal SQL execution. Each…

logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.