Vulthil.SharedKernel.Outbox.EntityFrameworkCore
The Entity Framework Core implementation of the Vulthil.SharedKernel.Outbox
engine. It isolates all EF Core coupling so the engine package stays persistence-agnostic.
When to use
- You normally get it transitively via
Vulthil.SharedKernel.Infrastructure(EnableOutboxProcessing) plus a provider package (UseNpgsql,UseMySql,UseCosmosDb). - Reference it directly to implement a custom EF
IOutboxStore(derive fromEntityFrameworkOutboxStore<TContext>), or to have aDbContextimplementISaveOutboxMessageswithout the full infrastructure package.
What's here
ISaveOutboxMessages— theDbSet<OutboxMessage>marker the application'sDbContextimplements.EntityFrameworkOutboxStore<TContext>— theIOutboxStoreimplementation: the transactional relay batch unit (execution strategy, transaction, fetch, dispatch, mark, commit) plus the capture surface. Provider packages override fetch/mark/transaction for row-level locking and Cosmos best-effort behaviour.DomainEventsToOutboxMessageSaveChangesInterceptor/IOutboxInterceptor— domain-event capture.ApplyOutbox()— aModelBuilderextension applying the provider-agnosticOutboxMessagemapping. Provider packages offer optimized alternatives (ApplyNpgsqlOutbox(),ApplyMySqlOutbox(),ApplyCosmosOutbox()).
See the Outbox Pattern article for the design.