Skip to content

EasyAF 5.0: dotnet easyaf new, performance pass, .NET 10/11 - #4

Merged
robertmclaws merged 14 commits into
devfrom
feature/easyaf-new
Oct 4, 2026
Merged

robertmclaws merged 14 commits into
devfrom
feature/easyaf-new

Conversation

@robertmclaws

@robertmclaws robertmclaws commented Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

EasyAF 5.0 Preview 1

Platform

  • Adds .NET 11 support
  • Removes .NET 8 & 9 support
  • Keep TemplateEngine's NuGet.* and EF Core Design's Microsoft.Build.Framework out of the Tools output, so MSBuildLocator loads the SDK's copies.
  • Move DocumentationFile to Directory.Build.targets so it doesn't need to be set in every project.
  • Remove a duplicate IsSampleProject check and a stale BurnRateContext item.

dotnet easyaf new

  • New command that builds Core, Data, Business, Api, MessageBus and Tests projects from the SDK's classlib/web/console templates, in-process, into an .slnx.
  • Options: --no-api, --no-messagebus, --no-runtime, --webjob, --namespace, -f 10 | 11.
  • Writes the solution build files (Directory.Build.props/.targets, global.json, nuget.config, DEV.runsettings), plus Program.cs, appsettings and test base classes for each project.
  • The Api comes with OData MCP (AddODataMcp → MapApiRoute → UseODataMcp), commented out until code generate creates the Api class.
  • The code generate "projects not found" message now points to dotnet easyaf new.

Business / Core

  • Support Guid, int and long audit IDs. Skip ICreatorTrackable when CreatedById is nullable, and report warning EASYAF005.
  • Replace EntityManager's TypeDictionary and LINQ checks with pattern matching, and drop Ben.TypeDictionary.
  • Cache ClaimsPrincipal ID claim types, and add TryGetIdClaim for Guid, int and long.
  • Generate nameof setters instead of expression trees, and create OriginalValues only when first used.
  • Add JsonSerializerOptions.IgnoreAuditFields() and mark the reflection-based converter obsolete.
  • Rename the Restier IModelBuilderExtensions class to EasyAF_Restier_IModelBuilderExtensions.

Analyzer / CodeGen

  • Move generator diagnostics into SourceGeneratorConstants, split EASYAF001 into 001/006/007, and add EasyAFLaunchDebugger.
  • Rename GenerateViews to EasyAFGenerateViews. The old name still works and overrides the new one, with warning EASYAF008.
  • BusinessDependencyGenerator no longer fails when there is no entity container.
  • Add Tests.Analyzers.EF6, which tests the source generator against the EDMX in Tests.Shared, and check in its generated output.

Benchmarks & docs

  • Add Benchmarks.Core, Benchmarks.EF6 and Benchmarks.EFCore, comparing EasyAF 4.x with 5.0.
  • Add the 5.0 release notes, update the audit, table design and converter docs, and add API reference pages for the new types.

🤖 Generated with Claude Code

robertmclaws and others added 7 commits September 14, 2026 15:04
* Content fixes
* Update docs.json
* Add net11 support, CSDL LongDescription, and isolate EF tests.
  - Target net11.0 (SDK 11 RC1); keep per-TFM package groups with 12.0.0 caps; drop coverlet; floor test STJ at 10.x.
  - Map CSDL Summary to <summary> and LongDescription to <remarks>; skip empty XML docs.
  - Load SQL Server EasyAF_LongDescription extended properties into CSDL LongDescription.
  - Stub DirectUpdate/DirectDelete on EF Core net11 (Z.EntityFramework.Plus has no 11.x package).
  - Round Interval test expectations to 8 decimals for net11 Convert.ToDecimal(double).
  - Stop CodeGen tests from writing Baselines; isolate EntityManager tests from shared LocalDB.
* Z.EntityFramework.EF6 reference update.
* Install .NET 11 RC1 on GitHub Actions.
* Basic Readme's (for now).
* Fix EFCoreToEdmx temp file collision across TFMs.
* Thanks, Postrges!
Main packs a stable EasyAF version that still references 11.0.0-rc.1 packages. TreatWarningsAsErrors was failing the build on that pack warning.
- Drop net11.0 from every project and the net11-only package groups, so the
  stable packages no longer depend on 11.0 RC packages. Remove the global
  NU5104 suppression that existed only for those RC dependencies.
- Set RollForward=Major on the dotnet-easyaf tool so it still runs on a
  machine that only has the .NET 11 runtime.
- Add DualHttpContextAccessor and InnerHttpContext with tests.
- Docs: drop the .NET 11 DirectUpdate/DirectDelete note from the
  Business.EFCore readme, remove the internal Clarification Needed guide from
  the docs project, and regenerate the docsproj output (net10.0 assembly list,
  API reference for DualHttpContextAccessor and InnerHttpContext).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- Target .NET 10 and 11 only; per-framework Microsoft.Build references
- Add `dotnet easyaf new`: scaffold Core, Data, Business, Api, MessageBus, and Tests projects from the SDK templates into an .slnx
- Keep TemplateEngine's NuGet.* and EF Core Design's Microsoft.Build.Framework out of Tools output so MSBuildLocator loads the SDK's copies
- Support Guid, int, and long audit IDs; skip ICreatorTrackable for a nullable CreatedById with warning EASYAF005
- Move generator diagnostics into SourceGeneratorConstants; split EASYAF001 into 001/006/007; add EasyAFLaunchDebugger
- Rename GenerateViews to EasyAFGenerateViews, with EASYAF008 for the old name
- Add Tests.Analyzers.EF6 to test the source generator against Tests.Shared's EDMX
- Rename Restier IModelBuilderExtensions to EasyAF_Restier_IModelBuilderExtensions
- Replace EntityManager's TypeDictionary + LINQ checks with pattern matching; drop Ben.TypeDictionary
- Cache ClaimsPrincipal ID claim types; add TryGetIdClaim for Guid, int, and long
- Generate nameof setters instead of expression trees; create OriginalValues lazily
- Add JsonSerializerOptions.IgnoreAuditFields(); obsolete the reflection-based converter
- Add Benchmarks.Core/EF6/EFCore comparing EasyAF 4.x (V4) with 5.0
- Set DocumentationFile in Directory.Build.targets so it uses AssemblyName
- Add 5.0 release notes; update the audit, table design, and converter docs
- Remove a duplicate IsSampleProject check and a stale BurnRateContext item

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@mintlify

mintlify Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated
EasyAF 🟢 Ready View Preview Oct 3, 2026, 8:46 PM

💡 Tip: Enable Automations to automatically generate PRs for you.

dev's commits are the same changes that reached this branch through main
(PR #3), so every conflict keeps this branch's side: the later 4.2.1 and 5.0
edits to the same lines. The only dev-specific difference, the missing NU5104
suppression in src/Directory.Build.props, was already removed here in 4.2.1.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@robertmclaws
robertmclaws merged commit d5f89d2 into dev Oct 4, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant