Releases: eventflow/EventFlow
Releases · eventflow/EventFlow
v0.43.2806
- Breaking: Updated all NuGet package dependencies to their latest versions
- New: EventFlow now embeds PDB and source code within the assemblies using
SourceLink (GitLink now removed)
v0.42.2755
- Fixed: The deterministic
IDomainEvent.Metadata.EventId
is now correctly
based on the both the aggregate identity and the aggregate sequence number,
instead of merely the aggregate identity - Fixed: GitLink PDB source URLs
v0.41.2727
- New: NuGet packages now contain PDB files with links to GitHub
(thanks to GitLink). Be sure
to checkEnable source server support
to be able to step through
the EventFlow source code. See GitLink documentation for details - Fixed: Fixed a bug in how EventFlow registers singletons with Autofac
that made Autofac invokeIDisposable.Dispose()
upon disposing
lifetime scopes
v0.40.2590
- New: Updated EventFlow logo (thanks @olholm)
- Fixed: Corrected logo path in NuGet packages
v0.39.2553
- New: Autofac is no longer IL merged into the
EventFlow
core NuGet package.
This is both in preparation for .NET Core and to simplify the build process.
EventFlow now ships with a custom IoC container by default. The Autofac based
IoC container is still available via theEventFlow.Autofac
and will
continue to be supported as it is recommended for production use - New: An IoC container based aggregate root factory is now the default
aggregate factory. The old implementation merely invoked a constructor
with the aggregate ID as argument. The new default also checks if any
additional services are required for the constructor making the distinction
between the two obsolete - New:
Command<,,>
now inherits fromValueObject
- Obsolete:
UseResolverAggregateRootFactory()
andUseAutofacAggregateRootFactory()
are marked as obsolete as this is now the default. The current implementation
of these methods does nothing - Obsolete: All
IEventFlowOptions.AddAggregateRoots(...)
overloads are obsolete,
the aggregate factory no longer has any need for the aggregate types to be
registered with the container. The current implementation of the method does
nothing
v0.38.2454
- Fix: Single aggregate read models can now be re-populated again
v0.37.2424
- Breaking: Remove the following empty and deprecated MSSQL NuGet packages. If
you use any of these packages, then switch to theEventFlow.MsSql
packageEventFlow.EventStores.MsSql
EventFlow.ReadStores.MsSql
- Breaking:
ITaskRunner.Run(...)
has changed signature. The task factory now
gets an instance ofIResolver
that is valid for the duration of the task
execution - Fixed: The resolver scope of
ISubscribeAsynchronousTo<,,>
is now valid for
the duration of the domain handling - New: Documentation is now released in HTML format along with NuGet packages.
Access the ZIP file from the GitHub releases page
v0.36.2315
- New: Documentation is now hosted at http://docs.geteventflow.net/ and
http://eventflow.readthedocs.io/ and while documentation is still kept
along the source code, the documentation files have been converted from
markdown to reStructuredText - New: Added
ISubscribeAsynchronousTo<,,>
as an alternative to the existing
ISubscribeSynchronousTo<,,>
, which allow domain event subscribers to be
executed using the newITaskRunner
- New: Added
ITaskRunner
for which the default implementation is mere a thin
wrapper aroundTask.Run(...)
with some logging added. Implemting this
interface allows control of how EventFlows runs tasks. Please note that
EventFlow will only useITaskRunner
in very limited cases, e.g. if
there's implantations ofISubscribeAsynchronousTo<,,>
v0.35.2247
- Fixed:
IAggregateStore.UpdateAsync
andStoreAsync
now publishes committed
events as expected. This basically means that its now possible to circumvent the
command and command handler pattern and use theIAggregateStore.UpdateAsync
directly to modify an aggregate root - Fixed: Domain events emitted from aggregate sagas are now published
v0.34.2221
- New core feature: EventFlow now support sagas, also known as process
managers. The use of sagas is opt-in. Currently EventFlow only supports sagas
based on aggregate roots, but its possible to implement a custom saga store.
Consult the documentation for details on how to get started using sagas - New: Added
IMemoryCache
for which the default implementation is a thin
wrapper for the .NET built-inMemoryCache
. EventFlow relies on extensive use
of reflection and the internal parts of EventFlow will move to this
implementation for caching internal reflection results to allow better control
of EventFlow memory usage. Invoke theUsePermanentMemoryCache()
extension
method onIEventFlowOptions
to have EventFlow use the previous cache
behavior usingConcurrentDictionary<,,>
based in-memory cache - New: Added
Identity<>.With(Guid)
which allows identities to be created
based on a specificGuid
- New: Added
Identity<>.GetGuid()
which returns the internalGuid