VOOZH about

URL: https://www.nuget.org/packages/ErikLieben.FA.ES.EventStreamManagement/

⇱ NuGet Gallery | ErikLieben.FA.ES.EventStreamManagement 2.0.0-preview.17




ErikLieben.FA.ES.EventStreamManagement 2.0.0-preview.17

This is a prerelease version of ErikLieben.FA.ES.EventStreamManagement.
dotnet add package ErikLieben.FA.ES.EventStreamManagement --version 2.0.0-preview.17
 
 
NuGet\Install-Package ErikLieben.FA.ES.EventStreamManagement -Version 2.0.0-preview.17
 
 
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ErikLieben.FA.ES.EventStreamManagement" Version="2.0.0-preview.17" />
 
 
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ErikLieben.FA.ES.EventStreamManagement" Version="2.0.0-preview.17" />
 
Directory.Packages.props
<PackageReference Include="ErikLieben.FA.ES.EventStreamManagement" />
 
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ErikLieben.FA.ES.EventStreamManagement --version 2.0.0-preview.17
 
 
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: ErikLieben.FA.ES.EventStreamManagement, 2.0.0-preview.17"
 
 
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ErikLieben.FA.ES.EventStreamManagement@2.0.0-preview.17
 
 
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ErikLieben.FA.ES.EventStreamManagement&version=2.0.0-preview.17&prerelease
 
Install as a Cake Addin
#tool nuget:?package=ErikLieben.FA.ES.EventStreamManagement&version=2.0.0-preview.17&prerelease
 
Install as a Cake Tool
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

ErikLieben.FA.ES

👁 NuGet
👁 .NET 9.0 | 10.0

👁 Quality Gate Status
👁 Maintainability Rating
👁 Security Rating
👁 Technical Debt
👁 Lines of Code
👁 Coverage
👁 Known Vulnerabilities

A lightweight, AOT-friendly Event Sourcing toolkit for .NET. Build aggregates, append and read events, create snapshots, upcast historical data, and integrate with Azure storage and Functions.

A Friendly Note

This is an opinionated library built primarily for my own projects and coding style. You're absolutely free to use it (it's MIT licensed!), but please don't expect free support or feature requests. If it works for you, great! If not, there are many other excellent libraries in the .NET ecosystem. For commercially supported event-sourcing platforms, consider EventStoreDB or AxonIQ's Axon Server/Framework.

That said, I do welcome bug reports and thoughtful contributions. If you're thinking about a feature or change, please open an issue first to discuss it.

Getting Started

The fastest way to explore the library is to run the TaskFlow demo application, a full-stack Aspire app showcasing aggregates, projections, Minimal APIs, and Azure Functions.

Prerequisites

Run the Demo

# Clone the repository
git clone https://github.com/eriklieben/ErikLieben.FA.ES.git
cd ErikLieben.FA.ES

# Run the Aspire demo
dotnet run --project demo/src/TaskFlow.AppHost

This starts:

  • API - ASP.NET Core Minimal API with event-sourced aggregates
  • Functions - Azure Functions with EventStream and Projection bindings
  • Frontend - Angular app (optional, at demo/taskflow-web)
  • Azurite - Azure Storage emulator for blobs/tables/queues
  • CosmosDB Emulator - For CosmosDB-backed event streams (optional)

Open the Aspire dashboard (URL shown in console) to see all services and explore.

Optional: Persist Storage

To keep data across restarts:

dotnet run --project demo/src/TaskFlow.AppHost -- --PersistStorage=true

Key Features

Feature Description
Aggregates Encapsulate state and behavior; rebuild state by folding events
Projections Read models that materialize streams into queryable shapes
CLI Tool Generates Fold mappings, factories, and JSON serializers
AOT-friendly Source-generated serializers, no reflection in hot paths ()
Storage Providers Azure Blob, Table, and Cosmos DB support
Minimal APIs [EventStream] and [Projection] parameter binding
Azure Functions Input bindings for aggregates and projections
Testing In-memory streams with Given-When-Then assertions

Packages

# Core library
dotnet add package ErikLieben.FA.ES

# CLI tool (local)
dotnet new tool-manifest
dotnet tool install ErikLieben.FA.ES.CLI --local

# Storage providers
dotnet add package ErikLieben.FA.ES.AzureStorage
dotnet add package ErikLieben.FA.ES.CosmosDb

# Integrations
dotnet add package ErikLieben.FA.ES.AspNetCore.MinimalApis
dotnet add package ErikLieben.FA.ES.Azure.Functions.Worker.Extensions

# Testing
dotnet add package ErikLieben.FA.ES.Testing

Requirements: .NET 9.0 or .NET 10.0

Documentation

Topic Description
Service registration and fluent builder API
Azure Blob, Table, and Cosmos DB setup
Optimistic concurrency and constraints
Explicit error handling with Result<T>
AggregateTestBuilder and Given-When-Then patterns
[EventStream] and [Projection] bindings
Append, read, and fold operations
Event notifications and subscriptions
Migrating event streams without downtime
Stream rollover and archiving
Code analyzers and diagnostics
Breaking changes and upgrade guide
Version history and release notes

Exception Reference

Structured error codes are documented in .

Quick Example

// Define an aggregate
public partial class Customer(IEventStream stream) : Aggregate(stream)
{
 public string? Name { get; private set; }

 public Task Register(string name)
 {
 ArgumentNullException.ThrowIfNull(name);
 return Stream.Session(ctx => Fold(ctx.Append(new CustomerRegistered(name))));
 }

 private void When(CustomerRegistered e) => Name = e.Name;
}

// Define an event
[EventName("Customer.Registered")]
public record CustomerRegistered(string Name);

// Generate supporting code
// dotnet tool run faes

See the folder for complete aggregate and projection examples.

License

MIT License - see the file for details.

Product Versions Compatible and additional computed target framework versions.
.NET net9.0 net9.0 is compatible.  net9.0-android net9.0-android was computed.  net9.0-browser net9.0-browser was computed.  net9.0-ios net9.0-ios was computed.  net9.0-maccatalyst net9.0-maccatalyst was computed.  net9.0-macos net9.0-macos was computed.  net9.0-tvos net9.0-tvos was computed.  net9.0-windows net9.0-windows was computed.  net10.0 net10.0 is compatible.  net10.0-android net10.0-android was computed.  net10.0-browser net10.0-browser was computed.  net10.0-ios net10.0-ios was computed.  net10.0-maccatalyst net10.0-maccatalyst was computed.  net10.0-macos net10.0-macos was computed.  net10.0-tvos net10.0-tvos was computed.  net10.0-windows net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on ErikLieben.FA.ES.EventStreamManagement:

Package Downloads
ErikLieben.FA.ES.AzureStorage

Azure Blob and Table storage provider for ErikLieben.FA.ES event sourcing framework. Includes snapshots, tiering, and projection coordination.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.0.0-preview.17 85 5/19/2026
2.0.0-preview.16 66 5/15/2026
2.0.0-preview.15 55 5/15/2026
2.0.0-preview.14 64 5/12/2026
2.0.0-preview.12 69 4/17/2026
2.0.0-preview.11 77 4/17/2026
2.0.0-preview.10 155 3/1/2026
2.0.0-preview.9 274 2/22/2026
2.0.0-preview.8 85 1/7/2026
2.0.0-preview.7 79 1/7/2026
2.0.0-preview.6 84 1/5/2026
2.0.0-preview.5 81 1/5/2026
2.0.0-preview.4 1,099 1/5/2026
2.0.0-preview.3 78 1/5/2026
2.0.0-preview.2 278 12/30/2025
2.0.0-preview.1 373 12/7/2025