Is Entity the same as Value Object?

In this post, we’ll discuss an interesting question about whether the concepts of Entity and Value Object are the same.

DDD and bulk operations

Combining bulk operations with Domain-Driven Design is a tough problem. In this article, we’ll look at why that is so and discuss ways to marry the two.

Combining ASP.NET Core validation attributes with Value Objects

This is a continuation of the article series about some more advanced error handling techniques. In the previous post, I advocated for the creation of an explicit Error class, and enumeration of all possible errors in your application with it. This approach helps you to Keep track of all known errors, React to those errors differently. The specific example I used in that article is returning 404 for an "

Advanced error handling techniques

This post describes some (more) advanced error handling techniques. I’ll probably do a series because this topic is large and there’s quite a few things that need to be cleared out, but we’ll see.

You are naming your tests wrong!

Giving your tests expressive names is important. Proper naming helps understand what the test verifies and how the underlying system behaves. In this post, we’ll take a look at a popular, yet inferior naming convention and see how it can be improved.

I'm writing a book!

I’m writing a book called Unit Testing: Principles, Patterns and Practices.

Merging domain events before dispatching

This post describes a common problem: how to deal with multiple domain events if raising of one of them must negate the others.

CQRS and exception handling

In this article, I’d like to discuss one particular aspect of exception handling relevant to CQRS and the decorator pattern.

When to validate commands in CQRS?

There’s a question that I didn’t cover in the course and that was raised at least twice since then: when to validate commands in CQRS?

Are CQRS commands part of the domain model?

I published an online course about CQRS a couple months ago, and since then I realized that there are some topics I didn’t put enough emphasize on in that course, or didn’t cover at all. In the next several blog posts, I’m going to fill this gap.