I took a look at some of the views that the CRM has generated when I created a sample entity. 7 joins is a bit too much, I feel.
And to top the previous point, an actual commit message by me, dating about two hours ago.
Rewriting the serialization / deserialization to use dynamic entities
and fixing an issue with null values not being liked by the @!#$ CRM.
That issue has cost me merely three days and much gnashing of teeth. I don't like MS CRM one bit. And any amount of insulation layers can't help here, I feel. I get bloody ever lasting COM errors from the application, and that is one of the main reason that I am not working on C++ right now.