Skip to content

Latest commit

 

History

History
27 lines (14 loc) · 1.75 KB

File metadata and controls

27 lines (14 loc) · 1.75 KB

Changelog

All notable changes to EFQueryGuard will be documented in this file.

[0.1.0] - 2026-03-09

New

  • N+1 Query Detection (EFQ001) — Warns when navigation properties are accessed inside foreach loops without a corresponding Include() call, catching the most common EF Core performance trap before it hits production.

  • Missing AsNoTracking Detection (EFQ002) — Flags read-only queries that don't use AsNoTracking() or AsNoTrackingWithIdentityResolution(). Automatically suppresses when SaveChanges() is present in the same method.

  • Unbounded Query Detection (EFQ003) — Catches ToList() and ToArray() calls on entire tables without Take() or pagination, preventing accidental full-table loads.

  • Cartesian Explosion Detection (EFQ004) — Warns when two or more Include() calls are chained without AsSplitQuery(), which can cause query result sets to explode in size.

  • Sync-over-Async Detection (EFQ005) — Detects synchronous methods like ToList() and FirstOrDefault() called on database queries inside async methods, suggesting the async equivalent.

  • Client Evaluation Detection (EFQ006) — Identifies custom method calls inside Where() and Select() expressions that EF Core cannot translate to SQL, which silently pull data to the client for filtering.

  • Zero-config NuGet installation — Just dotnet add package EFQueryGuard and diagnostics appear automatically during build. No configuration required.

  • Configurable via .editorconfig — Every rule can be tuned or disabled per-project using standard .editorconfig severity settings.

Fixed

  • Sync-over-async analyzer no longer false-positives on synchronous calls inside sync lambdas that happen to be nested within async methods.