---
title: "DDD, CQRS, and Event Sourcing in .NET"
description: "In this 3-day hands-on workshop, experienced C# developers learn domain-driven design, CQRS and event sourcing by building a .NET application step by step."
url: https://tn-data.se/courses/ddd-cqrs-and-event-sourcing-in-net/
type: workshop
lang: en
alternate: https://tn-data.se/sv/kurser/ddd-cqrs-och-event-sourcing-i-net.md
site: https://tn-data.se/
image: https://tn-data.se/_astro/21.aGSWFbJj_Z1pIgyQ.webp
---

# DDD, CQRS, and Event Sourcing in .NET

> Learn domain-driven design, CQRS and event sourcing by building a .NET application step by step.

## Workshop facts

- **Duration:** 3 days or 6 half days
- **Level:** Intermediate
- **Language:** English, Swedish

Do you want to build applications that are easy to change and last for years? Do you want a solid architecture and design from the start? Domain-driven design (DDD), CQRS and event sourcing are patterns and principles that help you get there.

Each one solves its own problem. DDD helps you model the business, so the code speaks the same language as the people who use it. CQRS separates reads from writes, so you can design and scale each side on its own. Event sourcing stores every change as an event, so you keep the full history of what happened. You can use each one on its own, but they fit really well together.

You don't have to build a full DDD, CQRS or event-sourced system to benefit. You come away with ideas, patterns and principles you can use in your current projects.

The workshop is hands-on. In the C# exercises you build an application step by step with .NET 10 and Visual Studio 2026, and put each part into practice as we cover it.

### What You Will Learn

You learn how to build software that:

- Reflects your domain and business more clearly
- Is easier to test and validate
- Scales more easily
- Adapts better to change
- Is easier to understand

### Who Is This Workshop For?

Experienced C# developers who want to improve how they design, structure and evolve their systems. If you build complex applications that need to scale, handle change or reflect real business rules, this workshop shows you how to apply DDD, CQRS and event sourcing in practice with .NET.

### Prerequisites

At least one year of experience as a C# developer, and a good understanding of C#, including generics, lambdas and LINQ. You don't need experience of parallel or async programming.

### Where Do the Examples Come From?

Many of the code examples build on [cqrs.nu](https://cqrs.nu/), an educational resource on CQRS and event sourcing that I co-created, together with the C# library Edument CQRS and Intentful Testing Starter Kit. The site has a tutorial and sample code that show how we model commands, events and aggregates, and it is the base for the hands-on exercises.

### Workshop Agenda

During the workshop, we cover the following topics.

#### Architecture & Design Principles

- Modern application architecture
- Composition & modular design
- Immutability & side-effect prevention
- Eventual consistency
- Micro front-ends & UI composition
- Architecture trade-offs
- Real-world best practices

#### Domain-Driven Design (DDD)

- Core DDD principles & patterns
- Entities, Value Objects, Domain Services
- Ubiquitous Language
- Bounded Contexts & context mapping
- Aggregates & consistency boundaries
- Invariants & business rule enforcement
- Modeling workflows & domain scenarios

#### CQS / CQRS

- Command–Query Separation (CQS)
- Command and Query Responsibility Segregation (CQRS)
- Separating reads from writes
- Designing commands, queries & handlers
- Read side vs write side modeling
- Mediator pattern

#### Events & Event-Driven Architecture

- Commands, domain events & workflows
- Event Storming (big picture + process)
- Event Modeling
- The Decider Pattern
- Policies & workflows

#### Event Sourcing

- Event Sourcing fundamentals
- Implementing an event store
- Event streams, snapshots & versioning
- Rebuilding state from events
- Event-sourced aggregates

#### Event Sourcing in practice (with .NET)

- Querying & Read Models
- Designing projections & read models
- Aggregate queries
- High-performance read models
- Query patterns in CQRS systems

#### Testing

- Test-driven development (TDD)
- Behavior-driven development (BDD)
- Example-driven testing
- Testing event-sourced aggregates
- Testing workflows, policies & read models

### About the Trainer

My name is [Tore Nestenius](https://tn-data.se/about/). I teach on-site and remotely, both directly for companies and through training companies in Europe. What I bring:

- I have trained developers since 2010 and taught several hundred courses and talks.
- I create, maintain and teach every course myself, and improve it after every delivery.
- I am a Microsoft .NET MVP.
- I co-founded [Edument](https://www.edument.se/), a Swedish training and consulting company, where I was CTO, developer and trainer.
- I work as an [independent senior .NET consultant](https://tn-data.se/consulting/), so I teach from real projects.
- I have worked with .NET and C# since 2002.
- I hold the Azure AZ-204 and AZ-900 certifications.
- I co-founded the [.NET Skåne](https://www.meetup.com/net-skane/) user group.

![Tore Nestenius teaching a course](https://tn-data.se/_astro/Tore-in-action-1.6Zvr4mPb_10GDS1.webp)

### Training FAQs

#### Do you provide both on-site and remote training classes?

Yes, I provide both types of training.

#### Do you provide training in both Swedish and English?

Yes, both options are available. All my course materials are in English and I can teach the class in either Swedish or English.

#### Do you do half-day training?

When I run on-site, I usually do full-day classes. For remote training, I can provide options for both half and full days.

#### Do you do webinars and shorter talks?

Yes, please visit my [Talks](https://tn-data.se/talks/) page for more details.

#### Do you provide customized courses?

Yes, I do. [Contact me](https://tn-data.se/contact/) for more information.

## Related reading

- [CQRS.nu: a tutorial and sample code for CQRS and event sourcing](https://cqrs.nu/)
- [How to Use KurrentDB for Event Sourcing in C# on Azure](https://nestenius.se/net/how-to-use-kurrentdb-for-event-sourcing-in-c-on-azure/)

To book this workshop or ask about it, see the [contact page](https://tn-data.se/contact/).
