A detailed look at EF Core’s JSON Columns feature

#539 – January 12, 2025

Comparing it with the traditional tables with indexes

A detailed look at EF Core’s JSON Columns feature
16 minutes by Jon P. Smith

This article explores EF Core's JSON Columns feature, comparing it with the traditional Tables/Indexes approach using a "list of books" application example. Jon explains that while JSON Columns (introduced in .NET 7) store data as JSON strings and work well for "coherent" data without external links, they perform differently from traditional database approaches.

How to Optimize the Performance of Blazor WebAssembly Applications
sponsored by Progress

Learn how to boost your Blazor WebAssembly app's performance. Optimize component re-rendering, use virtualization for large lists, streamline JavaScript calls, enable AOT compilation, and compress your bundles.

Timers, Finalizers and Memory Leaks
5 minutes by Sergey Teplyakov

In this article Sergey demonstrates how a DataRefresher class with a periodic refresh task remains alive even when it should be garbage collected, due to the timer queue keeping a strong reference to the instance.

Benchmarking with Visual Studio Profiler
7 minutes by Nik Karpinsky

This article describes how to use Visual Studio 17.13 Preview's updated BenchmarkDotNet diagnosers to optimize code performance. Nik demonstrates this by optimizing CsvHelper, a popular .NET package, where they identified and fixed unnecessary Type[] allocations that were occurring for each record being processed.

Writing a String Numeric Comparer with .NET 9
3 minutes by Khalid Abuhakmeh

Khalid discusses the implementation of a custom numeric comparer in .NET for sorting strings containing numeric values (like "Windows 10" or "Rocky 2"). He shares a NumericOrderer implementation using Span APIs that can handle alphanumeric sorting, noting that while .NET 10 will include this feature, creating a general-purpose numeric orderer is complex due to various edge cases and subjective ordering rules. The article includes code examples and considerations for customizing the implementation based on specific needs, such as handling decimal values or Roman numerals.

.NET Aspire: Managing Container & Data Lifetime
7 minutes by James Montemagno

In this article James introduces .NET Aspire 9 enhanced container management features, including the ability to control container lifetimes through the new WithLifetime API. The update allows developers to keep containers running persistently across multiple app launches, improving development speed by reusing existing containers and their data volumes. The new version also adds dashboard controls for starting, stopping, and restarting resources, and provides options for data persistence through volumes and bind mounts.

newsletters