Domain Entities

One concept in Domain Driven Design that may be familiar to you is entities. Most object relational mappers like Entity Framework and NHibernate use the term “entity”. In their context an entity is an object that maps a row of data to a table. Although...

Domain Services

Before diving in to what Domain Services are, let’s first under the problem they solve. Let’s recall one of the important rules of entities from our Aggregate Roots post. An Aggregate and its child entities should never contain object references to other...

What is Domain Driven Design?

Spend time searching the internet for “What is Domain Driven Design” and you’ll quickly find it’s been defined several different ways. Admittedly most of these definitions are excellent and get the point across. My goal for this article is to...

Using Value Objects as Entity Properties

When learning software development it’s highly probable you learned to leverage built-in programming language value types (e.g GUID, string, int, bool, decimal, etc) to pass around data within your business domain model. This is common practice, but we can...

Returning Value Objects from Methods

You’re not limited to using Value Objects as entity property types. They have a lot of valuable uses as method return values. In fact you can increase your software suppleness by using Value Objects as method return types. The purpose of the class doesn’t...

Null Value Object Properties

One of the questions I’m occasionally asked is how should null value object properties be handled? For clarification, the usual reason that warrants this question is because a domain entity property is optional and its type is a Value Object. The principles of...