Release v15.31.5
Summary
Model-bound projections with self-referencing child types were flattening nested child events into the outer collection. This update makes nested self-referencing events resolve into the intended inner child collection, keeps scenario materialization aligned with that behavior, and preserves existing no-auto-map behavior for child mappings.
// Expected shape after: ModuleAdded -> FeatureAdded(parent) -> SubFeatureAdded(parentFeatureId)
module.Features.Count == 1;
module.Features[0].SubFeatures.Count == 1;Added
- Added model-bound projection spec coverage for self-referencing children to assert nested placement of sub-children.
Changed
- Changed class-level
FromEvent<T>propagation for child types so nestedChildrenFrom<T>routes take precedence for child creation. - Changed in-memory
ReadModelScenariochild materialization to set child identifiers from resolved child keys for nested children. - Changed self-referencing test fixture events/attributes to model nested child creation through parent key hierarchy.
Fixed
- Fixed self-referencing
ChildrenFromprojections that placed sub-children at root instead of under the parent child node. - Fixed nested self-referencing read model materialization where child concept identifiers could deserialize incorrectly.
- Fixed regressions where child identifier properties were unintentionally mapped in
ChildrenFromdefinitions, breaking no-auto-map and identified-by-property expectations.
Removed
- Removed duplicate root-level creation path for nested self-referencing child events when a nested route already exists.
- Removed unintended automatic child identifier property mapping that caused projection model-building regressions.
Security
- No security-impacting behavior changes.
Deprecated
- None.