cqrs ddd example c#