Memoria.EventSourcing.Store.EntityFrameworkCore.Identity 1.3.2

Prefix Reserved
dotnet add package Memoria.EventSourcing.Store.EntityFrameworkCore.Identity --version 1.3.2
                    
NuGet\Install-Package Memoria.EventSourcing.Store.EntityFrameworkCore.Identity -Version 1.3.2
                    
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="Memoria.EventSourcing.Store.EntityFrameworkCore.Identity" Version="1.3.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Memoria.EventSourcing.Store.EntityFrameworkCore.Identity" Version="1.3.2" />
                    
Directory.Packages.props
<PackageReference Include="Memoria.EventSourcing.Store.EntityFrameworkCore.Identity" />
                    
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 Memoria.EventSourcing.Store.EntityFrameworkCore.Identity --version 1.3.2
                    
#r "nuget: Memoria.EventSourcing.Store.EntityFrameworkCore.Identity, 1.3.2"
                    
#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 Memoria.EventSourcing.Store.EntityFrameworkCore.Identity@1.3.2
                    
#: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=Memoria.EventSourcing.Store.EntityFrameworkCore.Identity&version=1.3.2
                    
Install as a Cake Addin
#tool nuget:?package=Memoria.EventSourcing.Store.EntityFrameworkCore.Identity&version=1.3.2
                    
Install as a Cake Tool

πŸš€ Memoriaβ„’

From Latin memoria (memory)

.Build

.NET framework implementing DDD, CQRS, and Event Sourcing.

Memoria is extremely flexible and expandable. It can be used as a simple mediator or as a full Event Sourcing solution with Cosmos DB or Entity Framework Core as storage.

⭐ Give a star

If you're using this repository for your learning, samples, workshop, or your project, please give a star. Thank you!

⚑Main Features

  • Mediator with commands, queries, and notifications
  • Multiple aggregates per stream
  • Option to store the aggregate snapshot alongside events for fast reads and write model strongly consistent
  • Four different read modes that allow multiple write/read patterns based on specific needs.
  • In memory aggregate reconstruction up to a specific event sequence or date if provided (soon up to aggregate version)
  • Events applied to the aggregate filtered by event type
  • Events applied to the aggregate filtered by event property (key/value pairs declared on the aggregate id)
  • Retrieval of all events applied to an aggregate
  • Querying stream events from or up to a specific event sequence or date/date range
  • Querying stream events filtered by event type and/or event property
  • Optimistic concurrency control with an expected event sequence
  • Automatic event/notification publication after a command is successfully processed that returns a list of results from all notification handlers
  • Automatic event/message publication after a command is successfully processed using Service Bus or RabbitMQ
  • Automatic command validation with FluentValidation if required
  • Command sequences that return a list of results from all commands in the sequence
  • Custom command handlers or services can be used instead of the automatically resolved command handlers
  • Result pattern across handlers and providers
  • Extensible architecture with providers for store, messaging, caching, and validation

πŸ—ΊοΈ Roadmap

βœ… Recently Completed

  • New PostgreSQL companion package for the Entity Framework Core store provider that makes eventPropertyFilter work correctly against jsonb columns (uses the @> JSON-containment operator and is GIN-indexable)
  • New IEventDataFilter extension point in the Entity Framework Core store provider for plugging in provider-specific JSON filter strategies
  • New package for in-memory Service Bus for easier testing in projects using Memoria
  • New package for in-memory RabbitMQ for easier testing in projects using Memoria
  • Event property filtering across aggregates and stream queries

⏭️ Next

  • Create an ecommerce demo application to showcase Memoria features

πŸ•™ To Follow

  • Option to automatically validate commands
  • Event Grid messaging provider
  • Kafka messaging provider
  • File store provider for event sourcing
  • Amazon SQS messaging provider

πŸ“£ Release Notes

πŸ“¦ Nuget Packages

Package Latest Stable
Memoria Nuget Package
Memoria.EventSourcing Nuget Package
Memoria.EventSourcing.Store.Cosmos Nuget Package
Memoria.EventSourcing.Store.Cosmos.InMemory Nuget Package
Memoria.EventSourcing.Store.EntityFrameworkCore Nuget Package
Memoria.EventSourcing.Store.EntityFrameworkCore.Identity Nuget Package
Memoria.EventSourcing.Store.EntityFrameworkCore.Npgsql Nuget Package
Memoria.Messaging.RabbitMq Nuget Package
Memoria.Messaging.RabbitMq.InMemory Nuget Package
Memoria.Messaging.ServiceBus Nuget Package
Memoria.Messaging.ServiceBus.InMemory Nuget Package
Memoria.Validation.FluentValidation Nuget Package
Memoria.Caching.Redis Nuget Package
Memoria.Caching.Memory Nuget Package

πŸ”„ A taste of the API

Mediator

public record CreateProduct(string Name) : ICommand;

public class CreateProductHandler : ICommandHandler<CreateProduct>
{
    public Task<Result> Handle(CreateProduct command) =>
        Task.FromResult(Result.Ok());
}

await dispatcher.Send(new CreateProduct("Espresso"));

See the Mediator Quickstart for queries, notifications, validation, custom handlers, command sequences, and SendAndPublish.

Event Sourcing

[EventType("OrderPlaced")]
public record OrderPlaced(Guid OrderId, decimal Amount) : IEvent;

var streamId = new CustomerStreamId(customerId);
var aggregateId = new OrderAggregateId(orderId);
var order = new Order(orderId, amount: 25.45m);

await domainService.SaveAggregate(streamId, aggregateId, order, expectedEventSequence: 0);

See the Event Sourcing Quickstart for the full aggregate definition, the four read modes, multiple aggregates per stream, and in-memory replay.

πŸ“˜ Full documentation

✨ Custom Implementations and Project Support

Memoria is designed to be extensible, supporting custom store, messaging, caching, and validation providers.

Need a specific implementation for your existing code or a new provider (e.g., a custom database store or messaging bus)? I’ve got you covered! I can also work directly on your projects to implement Memoria for your specific event sourcing or CQRS needs.

Please reach out to request custom integrations, new providers, or project assistance via LinkedIn.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  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

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.3.2 0 5/16/2026
1.3.1 40 5/13/2026
1.3.0 33 5/13/2026
1.2.1 61 5/12/2026
1.2.0 92 5/10/2026
1.1.0 127 2/1/2026
1.0.0 170 10/10/2025