Repository navigation
Closed
Labels
enhancementNew feature or requestNew feature or request
Description
Summary
A review of Wolverine.EntityFrameworkCore against its own docs and against plausible customer shapes. The recent field-found defects (#4611/#4612/#4613, weasel#621) each sat in a shape the suites do not exercise; this lists the rest so they can be closed on purpose. Everything below is "no test found", checked by grep and by reading the test classes; it is not a list of confirmed bugs.
Shapes with no test
| Shape | Notes |
|---|---|
ExecuteUpdateAsync / ExecuteDeleteAsync / Database.ExecuteSqlAsync inside a handler, either mode |
The docs' one hand-carried rule ("needs Eager"). The three ExecuteSqlRawAsync hits are test setup. Covered by the EfCoreOps proposal's tests. |
StorageActionCompliance in Lightweight, and on PostgreSQL |
Today 21 tests × (SQL Server, Eager) only. #4613 was found by a user. Add: Update<T>/Delete<T> of a detached instance whose key is already tracked (EF identity conflict), Delete<T> of a missing row (zero-row DbUpdateConcurrencyException). |
A DbContext model with OwnsOne, ComplexProperty (table-split and ToJson), ComplexCollection, Include |
Zero such models anywhere in the EF suites or samples. weasel#621's shape, and weasel#628 (the mapper drops table-split complex-type columns) both live here. Run one through [Entity], [FromEfCore(Include)], standalone and batched query plans (mutate-then-save; red on Weasel 9.32, green after #4624), and through UseEntityFrameworkCoreWolverineManagedMigrations() on a fresh database and against an EF-migrated one asserting no DROP COLUMN is rendered. |
| Behavioural atomicity | Bug_3291/3353/3358 and transaction_middleware_mode_tests assert generated source strings. Add: handler throws after SaveChanges → no row, no cascade delivered; Eager × Lightweight × handler × HTTP × mapped/unmapped. |
| Domain events on durable routes | configuration_of_domain_events_scrapers (8) asserts tracked sessions only — the vacuous shape #3744 named. Assert the wolverine_*_envelopes row (see the #3744-twin issue). |
Idempotency in Lightweight; DbUpdateConcurrencyException on a non-saga row-versioned entity with OnException<>().Retry |
Only the saga path tests concurrency. |
Two DbContexts with atomic writes; DbContext + IDocumentSession writes |
Designation is tested; atomicity is not (see the two-provider issue). |
IDbContextFactory<T> / AddDbContextPool / PooledDbContextFactory |
No middleware applies (CanApply needs a DbContext-castable dependency), so a factory-injecting handler silently gets no transaction and no outbox; a pooled context is not Wolverine-mapped and takes the raw ADO path. Either support or fail loudly. |
User BeginTransactionAsync alongside Wolverine's; TransactionScope; sync SaveChanges() |
Eager: a user begin throws; Lightweight: an uncommitted user transaction rolls back at dispose while messages still flush. |
Conjoined + user HasQueryFilter; ExecuteUpdate under conjoined |
See the conjoined holes issue. |
| net10 / EF Core 10 | tests.yml:140 passes --framework net9.0, so EfCoreTests and EfCoreTests.MultiTenancy never run on EF 10 in CI although both multi-target since #3540. Named query filters, complex collections and EF 10's ExecuteUpdate setter shapes are therefore unexercised. |
| SQLite / MySQL / Oracle EF providers | No EF suite on any of them (no provider package referenced). At minimum run the storage-action and outbox compliance on SQLite (the Fisher pairing) and the Oracle RAW(16) envelope id through EF. |
Related housekeeping (comment left on #4624)
BatchedLoadEntityFrame / CreateBatchQueryFrame / ExecuteBatchQueryFrame are dead code referenced only by batch_query_tests.cs; [Entity] never batches; batch-queries.md says it does and uses a batch.QueryCount(...) API Weasel does not have; QueryPlan/QueryListPlan keep the new() constraint Weasel 9.35 dropped.
🤖 Generated with Claude Code
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request
Activity
GH-4635: close four of the EF Core coverage gaps (#4644)
GH-4624: register the batched-query interceptor on every tenanted DbC…
Upgrade to Weasel 9.35.1 and finish the batched-query registration (G…