Command/Query separation for .NET