Let me preface this by saying that I am a dyed-in-the-wool database guy.
As a gross over-generalization: Developers don’t know SQL. Developers don’t really want to know SQL. They can write it, they can design tables, but it makes them feel icky. They tend to do stupid things when the necessary query is more than a simple join. Not because the developers are stupid — because they can’t be bothered. They like living in a world where they only have to deal with one concept space; moving from objects to tables and back is a context switch the price for which they don’t like paying.
This doesn’t mean they are bad, or wrong; it means there is an opportunity for improvement. If your customers (in this case, developers using your framework) don’t like SQL and tables — give them a layer of abstraction that lets them get away without dealing with the underlying mess.
It’s the same logic that makes garbage collection / automated memory management a big hit. Yes, developers can deal with it; yes, they can write code that is better optimized without it; but not having to deal with it makes them happier and more productive.