A Case of Decorators with Microsoft DI
Microsoft.Extensions.DependencyInjection implementation does not support decoration or interception out of the box. Here is how I solved this for a specific case.
Incremental Code Restructuring
Feature Switch and Branch by Abstraction are techniques usually mentioned in the context of Trunk Based Development. Nevertheless, when used together, they become a powerful tool for changing existing code.
Layers and Features
Layered Architecture is a well known and proven approach when developing software. But should it always be the default choice?
Structuring Data Access
Best practices in software development dictate that data storage and retrieval should be treated as an implementation detail. In practice it is easier said than done though - there are endless debates about how much abstraction is needed, whether the Repository Pattern is still relevant and if yes how to implement it, are ORMs good or evil, Micro ORMs and so on.
Breaking change in Entity Framework Core provider for PostgreSQL 3.0
Beware when upgrading form
Npgsql.EntityFrameworkCore.PostgreSQL 2.2 and running
PostgreSQL 9.6 or earlier.