Data
news

39stories

Stories

FluentMap 3.6
Keep old mappings working
DVDEV Community: #dotnet Rodrigo de Oliveira 5 d ago

Dapper FluentMap Is Back: What Changed from 2.0 to 3.6

After six years without a stable release, Dapper FluentMap is maintained again and version 3.6.0 adds nested mappings, property converters, isolated runtimes, analyzers and source generators. The author stresses keeping existing applications working during upgrades. The piece also covers what to check before moving from 2.0.0 and which databases are certified.

EF Core
Keep tenant data apart
DVDEV Community: #efcore Zohaib Ahmad 5 d ago

Multi-tenancy in EF Core: no tenant means no rows

The author shows a multi-tenancy pattern for ASP.NET Core and EF Core that uses global query filters so each request only sees its own tenant's rows. When no tenant is set, filtered queries return nothing, which fails closed. The post also covers tenant-scoped unique indexes, limiting IgnoreQueryFilters(), and an integration test that checks cross-tenant access. It is a practical starting point for SaaS backends.

OrmLite 10.4
Automatic retries on errors

Resilient Retries and Read Replicas in OrmLite

ServiceStack v10.4 lets OrmLite retry temporary database errors such as deadlocks, throttling and failovers through a single configuration line. It also adds read replica support, with read-only connections that reject writes even on the primary so replica bugs surface during development. Both features matter for any .NET app that talks to a database under load.

EF Core Migrations
Keep migrations out of startup
MLMostly Lucid (Scott Galloway) Scott Galloway 6 d ago

EF Core Migrations: Why Bundles Beat Startup MigrateAsync()

This guide explains why running MigrateAsync() at application startup couples deployments to schema changes and grants the app more database permissions than it needs. It walks through EF migration bundles as a controlled CI deployment step, with GitHub Actions and local examples. It also covers when runtime migrations are acceptable and the practical limits of bundles, such as the lack of a dry run.

ASP.NET Core 10
Stop double charges
DVDEV Community: #aspnetcore Zohaib Ahmad 6 d ago

Designing out double charges and overselling in an ASP.NET Core POS

A write-up on Tilly POS, a multi-branch point-of-sale built with ASP.NET Core 10, EF Core and SQL Server, explains how three costly failures were designed out: double charges, half-written sales and overselling. The fixes are practical: idempotency keys backed by a unique index, one transaction per sale, and a single conditional UPDATE for stock. Useful for any .NET service that moves money or inventory.

Cosmos DB Shell
Inspect data from terminal
CDAzure Cosmos DB Blog Jay Gordon 6 d ago

Inspecting Local Data with Azure Cosmos DB Shell

Azure Cosmos DB Shell lets you browse databases, containers and items from the terminal. This walkthrough pairs the shell with the local Azure Cosmos DB Linux Emulator and the FleetCharge sample data to show connecting, navigating, querying and point reads. It is a practical way to check what your application actually stored during development, without opening the portal or adding diagnostic code.

Azure SQL
Delete data in batches

Deleting 18 Million Rows in Azure SQL Without Downtime

Mitchel Sellers describes how he purged over 18 million historical rows from an S1-tier Azure SQL database by deleting small, committed batches instead of one large statement. The article covers batch sizing, clustered-key range selection, supporting indexes and production monitoring. It is a practical guide for any .NET developer planning a large data cleanup on a shared database.

Marten 8
Read your own writes

Read your own writes with Marten: ProjectLatest and Wolverine's UpdatedAggregate

Jeremy D. Miller explains how to read your own writes in event-sourced systems that use async projections in Marten. Switching from FetchLatest to ProjectLatest removes an extra database round trip by reusing pending events in the session. Wolverine's UpdatedAggregate type then lets HTTP endpoints and message handlers return the current aggregate with less code.

Feedback

Found a bug or have an idea? Your message lands straight in my inbox.

Type of message