How to Make Database Queries Easier to Debug
ORM query behaving differently than expected?
Look at the generated SQL.
In EF Core, you can inspect a query with:
var query = context.Orders
.Where(x => x.Status == OrderStatus.Completed)
.OrderByDescending(x => x.CreatedAt);
var sql = query.ToQueryString();
Generated SQL helps you see:
- Which columns are selected
- Which joins were generated
- Where filters are applied
- How ordering works
- Whether the query matches your assumptions
LINQ is convenient, but the database still executes SQL.
When a database query is slow or surprising, looking at the database query is often useful.