Subscribe
Dapper does not wrap writes in an implicit transaction. Learn BeginTransaction, Dapper.Transaction and TransactionScope so related SQL statements commit or roll back together.
Unit tests miss the full request pipeline. Integration tests with WebApplicationFactory, Testcontainers and Respawn verify your ASP.NET Core API against a real PostgreSQL database.
Generic repositories reuse common CRUD, but pure ones often become an anti-pattern. A hybrid base repository plus specific interfaces keeps reuse without losing entity-focused queries.
Wire up MongoDB.Driver in ASP.NET Core with options binding, a singleton IMongoClient, BSON document mapping and full CRUD for a Product collection.
Unit of Work is a transaction boundary for related changes, not a DbContext wrapper. With EF Core you already have it. With Dapper, you coordinate the connection and transaction yourself.
Inconsistent API errors make clients hard to write. Problem Details give ASP.NET Core a standard shape for HTTP failures, from expected endpoint errors to global exception handling.
Database transactions ensure multiple operations succeed or fail together. EF Core wraps SaveChanges in an implicit transaction, with explicit transactions and savepoints for more complex flows.
You do not need a class library per layer to follow Clean Architecture. One ASP.NET Core project, clear namespaces and NsDepCop or architecture tests can enforce the same dependency rules as a multi-project solution.