Summary
Release 2.2.0 is a minor release focused on improving the EF Core save pipeline architecture, reducing repeated ChangeTracker work, strengthening test coverage around the new interceptor path, and updating release metadata for the 2.2.x line.
Highlights
- Refactored EF Core save preparation into an application-owned
IApplicationSaveChangesPipeline/ApplicationSaveChangesPipeline. - Added
ApplicationSaveChangesInterceptoras the composite EF Core save lifecycle interceptor. - Moved save-pipeline invocation into EF Core
SavingChanges/SavingChangesAsyncandSavedChanges/SavedChangesAsynchooks. - Reduced repeated
ChangeTrackerenumeration by materializing relevant entries once and reusing them across save-pipeline concerns. - Reduced
ApplicationDbContextsave overrides to optimistic-concurrency exception handling around EF Core’s native save flow. - Documented the EF Core save pipeline extension model, including when to replace or decorate
IApplicationSaveChangesPipeline. - Added ADR 0004 explaining the decision to keep the composite SaveChanges interceptor rather than splitting into specialized interceptors at this stage.
- Added branch-focused tests for
ApplicationSaveChangesInterceptor, including constructor guard, non-ApplicationDbContext, and bounded after-save follow-up branches. - Updated package, README, template packaging, citation, and Zenodo metadata for
2.2.0.
Compatibility Notes
This release preserves the stable 2.x package identity, template short name, template options, and default scaffold behavior.
The default generated scaffold continues to use:
- Package ID:
NetCoreApplicationTemplate - Template short name:
netcoreapp-template - Default authentication provider:
cookie - Default data provider:
sqlite
No breaking changes are intended.
Upgrade
Install or update the template package with:
dotnet new install NetCoreApplicationTemplate::2.2.0For a local packed package:
dotnet new install ./artifacts/template-package/NetCoreApplicationTemplate.2.2.0.nupkgValidation
Before publishing, validate the release branch with the standard release gate, including:
./scripts/Validate-VersionConsistency.ps1CI should confirm build, tests, coverage gate, template package creation, scaffold smoke tests, and documentation checks.