DDD, CQRS, and Event Sourcing in .NET
Learn domain-driven design, CQRS and event sourcing by building a .NET application step by step.
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, 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. 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, a Swedish training and consulting company, where I was CTO, developer and trainer.
- I work as an independent senior .NET consultant, 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 user group.

DDD, CQRS, and Event Sourcing in .NET
Duration
3 days or 6 half days
Level
Intermediate
Language
English, Swedish
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 page for more details.
Do you provide customized courses?
Yes, I do. Contact me for more information.