Skip to content

Release 5.3.0 - #30

Merged
CaffeinatedCoder merged 3 commits into
mainfrom
release/5.3.0
Sep 5, 2026
Merged

Release 5.3.0#30
CaffeinatedCoder merged 3 commits into
mainfrom
release/5.3.0

Conversation

@CaffeinatedCoder

Copy link
Copy Markdown
Owner

Summary

One fix, plus the release bump.

  • Fixed: a property path through a value converter (x => x.Email.Value) now resolves against a model snapshot as well as the configured model. The snapshot persists the property as its provider type on a property-bag type and drops the converter, so the first dotnet ef migrations add succeeded and everything that diffed the resulting snapshot — the next migrations add, has-pending-model-changes, Migrate()'s pending-model-changes check — threw Could not resolve property path 'Email.Value'. On a property-bag type the persisted scalar is accepted for a path the configured model already validated; against a configured model the provider-type check is unchanged.
  • Version 5.3.0, package-validation baseline 5.2.0, SECURITY.md table, root and core changelogs, CLAUDE.md paragraph on the snapshot fallback.
  • AGENTS.md pointing non-Claude agents at CLAUDE.md; consumer names removed from the changelog and three test comments.

Verification

  • SnapshotRoundTripTests gained a context declaring every converter-member form (expression template, column part, composite part, filter placeholder, exclusion element; top level and inside a complex type). One test diffs the compiled snapshot against the live model with the harness differ, the other with the runtime differ AddNpgsqlComplexIndexes() registers, via HasDifferences.
  • Guard verified: with the fallback disabled both tests fail with the exact error above.
  • 290 unit tests and the 8 Integration tests (PostgreSQL 18 Testcontainer) pass locally.

🤖 Generated with Claude Code

CaffeinatedCoder and others added 3 commits September 5, 2026 12:09
A snapshot persists a converted property as its provider type on a
property-bag type and drops the converter, so the member check that
guards `x.CreatedAt.Year` had nothing to check against. The first
`migrations add` passed because the snapshot did not hold the path yet;
every diff whose source was the resulting snapshot then threw
`Could not resolve property path 'Email.Value'` — the next
`migrations add`, `has-pending-model-changes`, and the pending-changes
check `Migrate()` runs before applying anything.

On a property-bag type, an indexer property with no converter now
resolves as the persisted scalar. Entity and complex types in a snapshot
are both property bags, so one fallback covers expression templates,
column parts, composite parts, filter placeholders and exclusion
elements, at the top level and nested. SnapshotRoundTripTests declares
every one of those forms and diffs the compiled snapshot against the
live model with both the harness differ and the runtime differ
AddNpgsqlComplexIndexes() registers.

Also: AGENTS.md pointing agents at CLAUDE.md, and consumer names removed
from the changelog and test comments.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Filters_are_amended_idempotently reads a counter its context increments
in OnModelCreating. Contexts built with equal options share an internal
service provider and its model cache, and EF builds the runtime model
from an already-cached design-time model without running OnModelCreating
again. The sibling test builds this context's design-time model through
the harness, so under method-level parallelism whichever ran first
decided whether the counter was 4 or 0. Reproduced by forcing that order;
EnableServiceProviderCaching(false) gives the test an empty cache.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Only one test uses this context today, so it does not race yet; it is
the same shape as MutableApiTests and one sibling test away from it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@CaffeinatedCoder
CaffeinatedCoder merged commit 2e28a24 into main Sep 5, 2026
9 checks passed
@CaffeinatedCoder
CaffeinatedCoder deleted the release/5.3.0 branch September 5, 2026 10:17
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