Thought I'd blog about some of the things I'd like to see in an ORM in the future, particularly to support DDD cleanly: No enforced associations - I never want to create an association in the model just to support persistence, regardless of where keys are stored. So if I want to use uni-directional associations then I should be able to do that without having to go for workarounds . Aggregate locking - Currently, with NHibernate at least, its difficult to lock an entire aggregate. For example NHibernate's optimistic concurrency approach involves applying a version to rows, however aggregates can span tables so we really want to be able to give each aggregate a shared version ( coarse-grained locking approach ). See coarse-grained lock pattern . Validating before saving - I'd like hooks to automatically and cleanly validate an entire aggregate before persistence. Disabling unit of work - I'd like to be able to disable my unit of work, in many cases when working with DDD the UOW becomes more of a hindrance than anything else. I really want to be 100% sure that the only way to save a Customer is through a CustomerRepository . Revalidate value objects when reloading - Value objects only validate their data in their constructors...