Therein lies the rub. When you do ORM at this level it seems almost mechanical until you realize that it introduces a lot of application layer cruft in your more complex models that could have been done by queries.

I’m pretty good at queries, and while I ordinarily say don’t worry about preformance at first, the thing will preform better ultimately if we let the db server do complex queries rather than selecting a whole bunch of stuff and filtering it through a lot of these table objects in the app. When you do it this way you hardwire it into your model at a low level and it is not so easy to optimize.