public static IEventSourcingBuilder UseTextFileEventStore <TAggregate, TKey>(
            this IEventSourcingBuilder builder,
            Action <TextFileEventStoreOptions> setupAction)
            where TAggregate : IAggregate <TKey>
        {
            if (builder is null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.Services
            .ConfigureAggregate <TAggregate, TKey, TextFileEventStoreOptions>(setupAction)
            .AddScoped <IEventStore <TAggregate, TKey>, TextFileEventStore <TAggregate, TKey> >();

            return(builder.TryUseDefaultSnapshotStore <TAggregate, TKey>());
        }
Пример #2
0
        public static IEventSourcingBuilder UseEfCoreEventStore <TEventDbContext, TAggregate, TKey>(
            this IEventSourcingBuilder builder)
            where TEventDbContext : DbContext, IEventDbContext <TAggregate, TKey>
            where TAggregate : IAggregate <TKey>
        {
            if (builder is null)
            {
                throw new System.ArgumentNullException(nameof(builder));
            }

            builder.Services
            .AddScoped <IEventStore <TAggregate, TKey>, EfCoreEventStore <TEventDbContext, TAggregate, TKey> >()
            .AddScoped <IEventStoreInitializer <TAggregate, TKey>, EfCoreEventStoreInitializer <TEventDbContext, TAggregate, TKey> >()
            ;

            return(builder.TryUseDefaultSnapshotStore <TAggregate, TKey>());
        }