I'm an SOA: Service Oriented Architect. I believe that injecting your dependencies will overcome all object references that are null or otherwise not set to an instance of an object. Thus inverting control over your providers when visiting repositories requires using various interfaces, and you must consider all extensions of abstract or base objects.
Finally, I try to catch all exceptions. Though I comment thoroughly, I often delegate commands and queries to their respective asynchronous and cache enabled services to the detriment of the unsuspecting hack.