A very thoughtful analysis of what an ORM tool should have. The only problem is selecting one :). It could be a daunting task since there are virtually hundreds of ORM tools but no universal solution is available. Therefore you need to invest a lot of time for researching and selecting the right one for you. The problem that follows next is if this tool is going to last long enough at least until the next version of your product is out. Honestly I do not think I will go with this option. The alternative is code generation. More on this follows.