Tutorials Design Patterns in C#
Event Sourcing Pattern — Complete Guide
Event Sourcing Pattern — Complete Guide: free step-by-step lesson with examples, common mistakes, and interview tips — part of Design Patterns in C# on Toolliyo Academy.
On this page
Design Patterns in C# · Lesson 31 of 69
Event Sourcing Pattern
GoF Core ✓ → Enterprise → Cloud & Craft
Enterprise · 2 — App patterns · ~6 min · Module 4: Enterprise Design Patterns
What is this?
Event sourcing stores state as an append-only stream of domain events; current state is folded from the stream.
Why should you care?
ShopNest wallet disputes need exact history of credits/debits, not only a balance column.
See it live — copy this example
Paste into a C# console or class library project and run dotnet run.
public abstract record WalletEvent(Guid WalletId);
public sealed record Credited(Guid WalletId, decimal Amount) : WalletEvent(WalletId);
public sealed record Debited(Guid WalletId, decimal Amount) : WalletEvent(WalletId);
public sealed class Wallet
{
public decimal Balance { get; private set; }
public void Apply(WalletEvent e)
{
switch (e)
{
case Credited c: Balance += c.Amount; break;
case Debited d: Balance -= d.Amount; break;
}
}
}
var id = Guid.NewGuid();
var events = new WalletEvent[] { new Credited(id, 100), new Debited(id, 30) };
var wallet = new Wallet();
foreach (var e in events) wallet.Apply(e);
Console.WriteLine(wallet.Balance);
Run Example »
Edit the code below and click Run to see the result in Toolliyo’s live editor.
What happened?
- Events are facts; Apply rebuilds balance.
- Persist events; rebuild or snapshot for speed.
- Not every CRUD entity needs this.
Practice next
- Fold the sample to 70.
- Append another Credited and rebuild.
- Store events in an append-only table.
- Reject debit when balance insufficient.
- Version event payloads.
Remember
State = fold of events. Append-only audit. Use where history matters.
ShopNest wallet stream
Support replays wallet events for a dispute.
Outcome: Exact timeline of every paisa movement.
Interview prep for this lesson
Practice these questions aloud after reading—each links to a full structured answer.
Sign in to ask a question or upvote helpful answers.
No questions yet — be the first to ask!