v1.0.5002-alpha
New in 1.0-alpha (not released yet)
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
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/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 - 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 - 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 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
- 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