As I mentioned, I'm using SubSonic with this project and more specifically, I've been using what will be SubSonic 2.1. I've been quite happy with the work Rob Conery and his team have done with SubSonic. For this project, I chose to go with the RepositoryRecord base class rather than ActiveRecord for my objects. My reasoning was that I end up using services to interact with the objects anyway, so I might as well reduce the "weight" of the objects. The services that I use add basic object caching as well as hide SubSonic integration.
In order to facilitate caching RepositoryRecord items, I had to rewrite my CacheUtil class slightly: