Building an event sourced system in C#

If we only store the current state of our data, as we often do with CRUD-based systems, we’re losing information by default. For instance, there is no way of knowing how the data looked at a certain point in time. And when you build a new feature, you cannot re-run the system to find out what the result of history on that part of the system would have been.

This is exactly the type of problems the event sourcing pattern tries to solve. If we preserve all the events that led up to the current state, we can replay history and derive the current state from that, but we also open the door for more flexibility in our system.

During this workshop we will explore all the concepts that are associated with event sourcing. We will use C# to implement our own event sourced system over the course of the workshop, so we can see things in practice. Eventually, we will look at a couple of frameworks and libraries that can be useful when you start building your own event sourced system.


Covered Topics

During this workshop, you will learn about:

• The event sourcing pattern

• Relation between event sourcing and DDD

• Commands, Events, Aggregates, etc.

• How to build this code in a test-friendly way

• Read projections and the CQRS pattern

• Performance-optimizations in the system

• Enabling feature development with history applied

Target audience

To attend this workshop, you should be a developer with:

• Working knowledge of the C# programming language

• A basic knowledge of how to use a SQL Server database from code

You will spend a lot of time coding during this workshop. I will present concepts for the whole class, which you will then apply in code on your own, or as a group. This workshop will be very hands-on. If you prefer watching slide decks for most of the day, this workshop might not be for you.


• Your .NET IDE of choice (Visual Studio or Rider)

• .NET 6 SDK

• A working SQL server instance (LocalDB will do just fine)

• A working internet connection


Hannes Lowette

Date & time 20-21 OCT 2022, 9:30 - 17:30 Places Available 20