New in 1.0.5007
Read the complete migration guide to get the full list of changes as well as recommendations
on how to do the migration.
https://geteventflow.net/migrations/v0-to-v1/
(If you see any changes you feel ownership of and you want you name there, create an issue
and it will get fixed asap. EventFlow would be where it is today without the grate community
contributions that it have received over the years)
Changes since last 1.x pre-release, 1.0.5003-alpha
- New: .NET 8 support
- New: Enable
IEventStore
to load events to a given sequence number (thanks @SeWaS) - New:
EventFlow.Hangfire
now part of the v1 release cycle (thanks @nicolaj-hartmann) - Fix/breaking: Switch from
System.Data.SqlClient
toMicrosoft.Data.SqlClient
(thanks @janrybka)
Changes since last 1.x pre-release, 1.0.5002-alpha
- New: Read model rebuilder can be done across multiple read model types. The piping of events
and applying them are now done concurrently to reduced memory usage and significantly improve
time to completion (by @kyle-bradley) - New: Created
EventFlow.Redis
(by @joshua211) - New: Migrated
EventFlow.RabbitMQ
to v1 (by @kyle-bradley) - Breaking: Removed old
EventFlow.Shims.Tasks
class that provided a wrapper forTask.CompletedTask
in frameworks that did not have it
Changes since last 1.x pre-release, 1.0.5001-alpha
- New/breaking:
IEventUpgrader<,>
are now (finally) async. For an easy upgrade experience,
use the new base classEventUpgraderNonAsync
for any existing upgraders. Its aabstract
class that implements the updated interface and provides aabstract
method with the same
signature as the previous interface - Fix/breaking: Event upgraders are now used during read model population. As the upgraders
are re-used across multiple aggregates, there is a high likelihood that some additions are
needed in any existing upgraders. Upgraders are stored on the newIEventUpgradeContext
,
which is created by the newIEventUpgradeContextFactory
. Replace this if you need addition
context during event upgrades - Fix:
SnapshotAggregateRoot
now correctly loads previous source IDs as well
adds the current source ID that triggered the snapshot. This causes the
DuplicateOperationException
to be correctly thrown if a duplicate source
ID as added before a snapshot was taken - Fix: Upgrade
Newtonsoft.Json
from11.0.2
to13.0.1
to fix DoS
vulnerability - Fix:
UseFilesEventPersistence
should no longer throw exception for .NET regarding relative paths
Complete 1.0 change log
- New: Read model rebuilder can be done across multiple read model types. The piping of events
and applying them are now done concurrently to reduced memory usage and significantly improve
time to completion (by @kyle-bradley) - New: Created
EventFlow.Redis
(by @joshua211) - 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 onIMsSqlConnection
andISqlConnection
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/breaking:
IEventUpgrader<,>
are now (finally) async. For an easy upgrade experience,
use the new base classEventUpgraderNonAsync
for any existing upgraders. Its aabstract
class that implements the updated interface and provides aabstract
method with the same
signature as the previous interface - New: Its now possible to change the execution timeout for database migrations using the
SetUpgradeExecutionTimeout(...)
on the SQL configuration - Fix/breaking: Event upgraders are now used during read model population. As the upgraders
are re-used across multiple aggregates, there is a high likelihood that some additions are
needed in any existing upgraders. Upgraders are stored on the newIEventUpgradeContext
,
which is created by the newIEventUpgradeContextFactory
. Replace this if you need addition
context during event upgrades - Breaking: Removed the following dead and/or confusion MSSQL attributes. The real ones
are named the same, with withSql...
instead ofMsSql...
MsSqlReadModelIdentityColumn
MsSqlReadModelIgnoreColumn
MsSqlReadModelVersionColumn
- Breaking: Methods on
IMsSqlDatabaseMigrator
andISqlDatabaseMigrator
have been
made async and have an extraCancellationToken
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 madeIAmReadModelFor
async - Breaking: Removed
EventFlow.Core.AsyncHelper
as well as all async wrapper methods
that used itIAggregateStore.Load
IAggregateStore.Store
IAggregateStore.Update
ICommandBus.Publish
IEventStore.LoadAggregate
IEventStore.LoadEvents
IEventStore.LoadAllEvents
IQueryProcessor.Process
IReadModelPopulator.Populate
IReadModelPopulator.Purge
- Breaking: Removed old
EventFlow.Shims.Tasks
class that provided a wrapper forTask.CompletedTask
in frameworks that did not have it - Fix:
SnapshotAggregateRoot
now correctly loads previous source IDs as well
adds the current source ID that triggered the snapshot. This causes the
DuplicateOperationException
to be correctly thrown if a duplicate source
ID as added before a snapshot was taken - Fix: Upgrade
Newtonsoft.Json
from11.0.2
to13.0.1
to fix DoS
vulnerability - 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