Releases: eventflow/EventFlow
Releases · eventflow/EventFlow
v0.7.481
- New: EventFlow now includes a
IQueryProcessorthat enables you to implement
queries and query handlers in a structure manner. EventFlow ships with two
ready-to-use queries and related handlersReadModelByIdQuery<TReadModel>: Supported by in-memory and MSSQL read
model storesInMemoryQuery<TReadModel>: Only supported by in-memory read model store,
but lets you search for any read model based on aPredicate<TReadModel>
v0.6.456
- Breaking: Read models have been significantly improved as they can now
subscribe to events from multiple aggregates. Use a custom
IReadModelLocatorto define how read models are located. The supplied
ILocateByAggregateIdsimply uses the aggregate ID. To subscribe
to other events, simply implementIAmReadModelFor<,,>and make sure
you have supplied a proper read model locator.UseMssqlReadModelsignature changed, change to
.UseMssqlReadModel<MyReadModel, ILocateByAggregateId>()in
order to have the previous functionalityUseInMemoryReadStoreForsignature changed, change to
.UseInMemoryReadStoreFor<MyReadModel, ILocateByAggregateId>()in
order to have the previous functionality
- Breaking: A warning is no longer logged if you forgot to subscribe to
a aggregate event in your read model as read models are no longer
strongly coupled to a specific aggregate and its events - Breaking:
ITransientFaultHandlernow takes the strategy as a generic
argument instead of theUse<>method. If you want to configure the
retry strategy, useConfigureRetryStrategy(...)instead - New: You can now have multiple
IReadStoreManagerif you would like to
implement your own read model handling - New:
IEventStorenow has aLoadEventsAsyncandLoadEvents
that loadsIDomainEvents based on global sequence number range - New: Its now possible to register generic services without them being
constructed generic types, i.e., registertypeof(IMyService<>)as
typeof(MyService<>) - New: Table names for MSSQL read models can be assigned using the
TableAttributefromSystem.ComponentModel.DataAnnotations - Fixed: Subscribers are invoked after read stores have been updated,
which ensures that subscribers can use any read models that were
updated
v0.5.390
- POTENTIAL DATA LOSS for files event store: Files event store now
stores its log as JSON instead of anintin the form
{"GlobalSequenceNumber":2}. So rename the current file and put in the
global sequence number before startup - Breaking: Major changes has been made regarding how the aggregate
identity is implemented and referenced through interfaces. These changes makes
it possible to access the identity type directly though all interface. Some
notable examples are listed here. Note that this has NO impact on how data
is stored!IAggregateRootchanged toIAggregateRoot<TIdentity>ICommand<TAggregate>changed toICommand<TAggregate,TIdentity>ICommandHandler<TAggregate,TCommand>changed to
ICommandHandler<TAggregate,TIdentity, TCommand>IAmReadModelFor<TEvent>changed to
IAmReadModelFor<TAggregate,TIdentity,TEvent>IDomainEvent<TEvent>changed toIDomainEvent<TAggregate,TIdentity>
- New:
ICommandBus.Publishnow takes aCancellationTokenargument - Fixed: MSSQL should list columns to SELECT when fetching events
v0.4.353
- Breaking:
ValueObjectnow uses public properties instead of both
private and public fields - Breaking: Aggregate IDs are no longer
stringbut objects implementing
IIdentity - Breaking: MSSQL transient exceptions are now retried
- Breaking: All methods on
IMsSqlConnectionhas an extraLabelargument - New:
ITransientFaultHandleradded along with default retry strategies
for optimistic concurrency and MSSQL transient exceptions - New: Release notes added to NuGet packages
- New: Better logging and more descriptive exceptions
- Fixed: Unchecked missing in
ValueObjectwhen claculating hash - Fixed:
NullReferenceExceptionthrown ifnullwas stored
inSingleValueObjectandToString()was called