Domain event is a very useful concept in Domain Driven Design that allows you to separate concerns in your domain via events. You can also offload the side effects of the actions in your domain to an event handler and let that run asynchronously.
In DDD, the value object is used when your entity conceptually does not have an identity and it is all about the data. Now the question of something being a value object or an entity - where we care about the actual Id - is a business question but think about an address in a ordering management system where a customer has addresses.
You're going to think I'm jumping on the F# bandwagon as well. Well kind of but that's not the point of this post. The thing is, people ask me all the time: Why should I even care about F#? I have my own C# language that I love, why go through the burden of learning another language?
In this series, I'm going to write about some of the challenges we've been facing with DDD. If you want to adapt DDD on .NET stack, this hopefully will be useful for you. Along with concepts I'll talk about what works (or doesn't) well with EntityFramework, but most of it will still be useful.