Skip to content

Releases: eventflow/EventFlow

v1.0.5001-alpha

15 Mar 08:19
519746a

Choose a tag to compare

v1.0.5001-alpha Pre-release
Pre-release

IMPORTANT: Major API breaking changes might occur between 1.0 pre-releases. As breaking
API changes will need to be tested and verified before the final 1.0 release.

Read the complete migration guide to get the full list of changes as well
as recommendations on how to do the migration.

https://github.com/eventflow/EventFlow/blob/develop-v1/MIGRATION_GUIDE.md

  • New/breaking: Replace internal IoC implementation with Microsoft.Extensions.DependencyInjection
  • New/breaking: Replace internal logging implementation with Microsoft.Extensions.Logging
  • New/breaking: SQL read models now support different connection strings using the
    [SqlReadModelConnectionStringName] attribute. To allow executing queries using different
    connection strings, all methods on IMsSqlConnection and ISqlConnection now have an
    additional argument, string connectionStringName to signify which connection string
    should be used for the query
  • New/breaking: SQL connection strings are now fetched from the
    SqlConfiguration<T>.GetConnectionStringAsync(...) instead of a property, allowing more
    control of the connection string used at runtime
  • New: Its now possible to change the execution timeout for database migrations using the
    SetUpgradeExecutionTimeout(...) on the SQL configuration
  • Breaking: Removed the following dead and/or confusion MSSQL attributes. The real ones
    are named the same, with with Sql... instead of MsSql...
    • MsSqlReadModelIdentityColumn
    • MsSqlReadModelIgnoreColumn
    • MsSqlReadModelVersionColumn
  • Breaking: Methods on IMsSqlDatabaseMigrator and ISqlDatabaseMigrator have been
    made async and have an extra CancellationToken argument
  • Breaking: Remove support for .NET Framework and consolidate on .NET (Core) LTS versions
  • Breaking: Replace internal in-memory caching with Microsoft.Extensions.Caching.Memory
  • Breaking: Removed IAmAsyncReadModelFor and made IAmReadModelFor async
  • Breaking: Removed EventFlow.Core.AsyncHelper as well as all async wrapper methods
    that used it
    • IAggregateStore.Load
    • IAggregateStore.Store
    • IAggregateStore.Update
    • ICommandBus.Publish
    • IEventStore.LoadAggregate
    • IEventStore.LoadEvents
    • IEventStore.LoadAllEvents
    • IQueryProcessor.Process
    • IReadModelPopulator.Populate
    • IReadModelPopulator.Purge
  • Version of 0.x included: 0.83.4713. 0.x changes are merged to 1.x at regular
    intervals, but might be one or two releases behind

v1.0.4748-alpha

09 Sep 08:49
d93b883

Choose a tag to compare

v1.0.4748-alpha Pre-release
Pre-release

IMPORTANT: Major API breaking changes might occur between 1.0 pre-releases. As breaking
API changes will need to be tested and verified before the final 1.0 release.

Read the complete migration guide to get the full list of changes as well
as recommendations on how to do the migration.

https://github.com/eventflow/EventFlow/blob/develop-v1/MIGRATION_GUIDE.md

  • New/breaking: Replace internal IoC implementation with Microsoft.Extensions.DependencyInjection
  • New/breaking: Replace internal logging implementation with Microsoft.Extensions.Logging
  • New/breaking: SQL read models now support different connection strings using the
    [SqlReadModelConnectionStringName] attribute. To allow executing queries using different
    connection strings, all methods on IMsSqlConnection and ISqlConnection now have an
    additional argument, string connectionStringName to signify which connection string
    should be used for the query
  • New/breaking: SQL connection strings are now fetched from the
    SqlConfiguration<T>.GetConnectionStringAsync(...) instead of a property, allowing more
    control of the connection string used at runtime
  • New: Its now possible to change the execution timeout for database migrations using the
    SetUpgradeExecutionTimeout(...) on the SQL configuration
  • Breaking: Removed the following dead and/or confusion MSSQL attributes. The real ones
    are named the same, with with Sql... instead of MsSql...
    • MsSqlReadModelIdentityColumn
    • MsSqlReadModelIgnoreColumn
    • MsSqlReadModelVersionColumn
  • Breaking: Methods on IMsSqlDatabaseMigrator and ISqlDatabaseMigrator have been
    made async and have an extra CancellationToken argument
  • Breaking: Remove support for .NET Framework and consolidate on .NET Core LTS versions
  • Breaking: Replace internal in-memory caching with Microsoft.Extensions.Caching.Memory
  • Breaking: Removed IAmAsyncReadModelFor and made IAmReadModelFor async
  • Breaking: Removed EventFlow.Core.AsyncHelper as well as all async wrapper methods
    that used it
    • IAggregateStore.Load
    • IAggregateStore.Store
    • IAggregateStore.Update
    • ICommandBus.Publish
    • IEventStore.LoadAggregate
    • IEventStore.LoadEvents
    • IEventStore.LoadAllEvents
    • IQueryProcessor.Process
    • IReadModelPopulator.Populate
    • IReadModelPopulator.Purge
  • Version of 0.x included: 0.83.4713. 0.x changes are merged to 1.x at regular
    intervals, but might be one or two releases behind

v0.83.4713

07 Sep 21:09
e544b76

Choose a tag to compare

  • New: Queue name used by HangfireJobScheduler can be overridden:
    eventFlowOptions.UseHangfireJobScheduler(o => o.UseQueueName("myqueue"))
  • Fixed: Do not throw MetadataKeyNotFoundException if there is no meta data on
    previous_source_ids in snapshots

v0.82.4684

30 Aug 16:07
86a749f

Choose a tag to compare

  • Fix: Allow the use of explicitly implemented interfaces in the read model
  • New: added extension methods to the EventFlow.EntityFramework package that allow
    us to configure eager loading of related data. Example usage:
    public static IEventFlowOptions Configure(this IEventFlowOptions options)
    {
      return options
        .UseEntityFrameworkReadModel<MyEntity, MyDbContext>(
          cfg => cfg.Include(x => x.SomeProperty)
                    .ThenInclude(y => y.SomeOtherProperty)
        );
    }

v0.82.4659

17 Jun 11:08
ef1d038

Choose a tag to compare

  • Fix: Source IDs are now added to snapshots
  • Fix: InMemoryReadStore will not break on unmodified update result

v1.0.4617-alpha

11 Jun 14:43
1e4976e

Choose a tag to compare

v1.0.4617-alpha Pre-release
Pre-release

Read the complete migration guide to get the full list of changes as well
as recommendations on how to do the migration.

https://github.com/eventflow/EventFlow/blob/develop-v1/MIGRATION_GUIDE.md

  • Breaking: Remove support for .NET Framework and consolidate on .NET Core LTS versions
  • Breaking: Replace internal IoC implementation with Microsoft.Extensions.DependencyInjection
  • Breaking: Replace internal logging implementation with Microsoft.Extensions.Logging
  • Breaking: Replace internal in-memory caching with Microsoft.Extensions.Caching.Memory
  • Breaking: Remove IAmAsyncReadModelFor and made IAmReadModelFor async
  • Breaking: Removed EventFlow.Core.AsyncHelper as well as all async wrapper methods
    that used it.
    • IAggregateStore.Load
    • IAggregateStore.Store
    • IAggregateStore.Update
    • ICommandBus.Publish
    • IEventStore.LoadAggregate
    • IEventStore.LoadEvents
    • IEventStore.LoadAllEvents
    • IQueryProcessor.Process
    • IReadModelPopulator.Populate
    • IReadModelPopulator.Purge

v0.81.4483

14 Dec 10:35
e128096

Choose a tag to compare

  • Breaking: Elasticsearch NEST Nuget Library updated from v6.1.0 to v7.8.2
  • New: Now possible to implement error handlers for specific sagas using
    ISagaErrorHandler<TSaga>
  • Fixed: You can now create Id : Identity<Id>

v0.80.4377

01 Oct 19:42
bf84967

Choose a tag to compare

  • Breaking: To support .NET going forward, all EventFlow test have been converted
    from .NET Framework 4.x to .NET Core 3.1. This however, introduced a set of
    breaking changes
    • EntityFramework has been updated from 2.2.6 to 3.1.5
    • IHangfireJobRunner.Execute is now IHangfireJobRunner.ExecuteAsync
  • Breaking: Merged AggregateReadStoreManager and SingleAggregateReadStoreManager
    into one class in order to always guarantee in-order event processing
  • Breaking: Marked the UseReadStoreFor<,,,> configuration methods as obsolete,
    in favor of the simpler overloads with less type parameters (as those automatically
    figure out the AggregateRoot and Id types and configure the more reliable
    SingleAggregateReadStoreManager implementation)
  • Obsolete: The class AsyncHelper and all non-async methods using it have been
    marked obsolete and will be removed in EventFlow 1.0 (not planned yet). If you rely
    on these non-async methods, then merely copy-paste the AsyncHelper from the EventFlow
    code base and continue using it in your transition to async only
  • Fixed: An issue where EntityFrameworkEventPersistence could possibly save aggregate
    events out of order, which would lead to out-of-order application when streaming events
    ordered by GlobalSequenceNumber
  • New: FilesEventPersistence now uses relative paths
  • New: A new set of hook-in interfaces are provided from this release, which should
    make it easier to implement crash resilience (#439) in EventFlow. Please note that
    this new API is experimentational and subject to change as different strategies are
    implemented
    • IAggregateStoreResilienceStrategy
    • IDispatchToReadStoresResilienceStrategy
    • IDispatchToSubscriberResilienceStrategy
    • ISagaUpdateResilienceStrategy

v0.79.4216

13 May 18:51
2a974d0

Choose a tag to compare

  • New: Added .NET Core 3.1 target for the EventFlow
    and EventFlow.EntityFramework packages
  • Added quoting to the SQL query generator for the column names

v0.78.4205

11 May 08:38
281d226

Choose a tag to compare

  • New: Updated LibLog provider to support structured logging with NLog 4.5.
    Reduced memory allocations for log4net-provider
  • New: Made several methods in AggregateRoot<,> virtual to allow
    easier customization
  • Fixed: Added quoting to the SQL query generator for the column names
  -- query before the fix
    UPDATE [ReadModel-TestAttributes]
    SET UpdatedTime = @UpdatedTime
    WHERE Id = @Id
  
  -- query after the fix
    UPDATE [ReadModel-TestAttributes]
    SET [UpdatedTime] = @UpdatedTime
    WHERE [Id] = @Id
  • Fixed: Do not log about event upgraders if none is found for an event
  • Fixed: Add default null predicate to AddCommands and AddJobs