EF Core 8's feature list is long; four I actually used in production — all cut query and migration cost.
ExecuteUpdate/Delete for bulk updates and deletes without fetching entities — cuts N+1 and memory spikes. JSON columns for flexible fields, but GIN on every JSONB bloats disk. Complex types for value object mapping — less primitive obsession. Primitive collections for tags and lists without join table bloat.

await db.Orders.Where(o => o.Status == Open).ExecuteUpdateAsync(
s => s.SetProperty(o => o.Status, Closed), ct);
Not a cool feature — a choice that improves your query's EXPLAIN output.
