Event Sourcing
Purview EventSourcing Wiki
Section titled “Purview EventSourcing Wiki”This wiki is the project documentation hub for framework features, provider capabilities, and release workflow.
Start here
Section titled “Start here”- Getting Started
- Guarantees and Limitations
- Solution Design Guide
- Solution Design Worksheet
- Provider Feature Matrix
- Provider Capabilities
- Transactional Outbox
- Transaction Guarantees
- Event Contract Manifest
- Source Generator Performance
- Runtime Performance
- Dependency Guardrails
- Source Generator Behaviors
- Source Generator Code Fixes
- SQL Server Guide
- Shared Testing Framework
- Release Flow
Feature highlights
Section titled “Feature highlights”- Core framework (
Purview.EventSourcing)AggregateBase,IEventStore,IQueryableEventStore, andIEventStoreTransactionFactory.- Transaction guarantees: atomic requirements, best-effort fallback, and failure behavior.
- Snapshot schema versioning: compatibility detection and event-replay rebuilds.
- Source-generated aggregate events/command wiring from partial methods.
- Provider-agnostic aggregate load/save/query APIs.
- Solution design
- Paper-first worksheets for aggregate boundaries, commands, events, relationships, and event streams.
- Guidance for relational data, value objects, validation layers, and schema evolution.
- Storage providers
- SQL Server / Azure SQL: append-only event streams, internal replay snapshots, and optional SQL query snapshots with transaction coordination.
- PostgreSQL: append-only event streams, internal replay snapshots, and optional PostgreSQL JSONB query snapshots.
- Azure Storage: table-backed event streams with blob support for snapshots/large payloads.
- MongoDB: event streams plus an optional MongoDB query snapshot store.
- Cosmos DB: optional query snapshot store.
- In-memory provider: non-persistent event/snapshot store for local/test scenarios.
- Validation adapters: FluentValidation and ZodSharp adapters for
IAggregateValidator<T>. - SQL snapshot translation distinguishes between provider-converted scalar value objects and directly mapped complex snapshot graphs; see the provider matrix and SQL guide for details.
- Generator behavior
[Aggregate]supports no base, directAggregateBase, and transitive base-chain inheritance.- Property hooks are property-scoped across generated events that map that property.
On<Property>Changedruns inApply(...)(including replay);On<Property>Changingruns on command/event-raise path only.- Event hooks (
OnRaising...,OnRaised...,OnApplied...) are event-scoped.