I've been a heavy user of .Net since its inception, but I have avoided using any of its ORM features, regardless of flavor. I have always been skeptical of tools which abstract CRUD, binding, validation, searching, etc. Some of this skepticism comes from painful, real-world experience; the rest of it comes from the innate desire to "own" the solution and understand every part of it.
Today, I took a serious look at Entity Framework 4--I've looked before, but not quite as seriously (or perhaps with less of an open mind).
Honestly, I'm not sure what to think, though Microsoft has done an admirable job in many regards. Their implementation of expression trees and IQueryable is impressive and does an excellent job of enabling developers to use a common syntax for data and business objects.
As a software architect, I am faced with a decision. I have a powerful and stable development framework that represents 10 years worth of lessons learned and improvements. My ORM strategy is less about pure automation and more about flexibility, extensibility and performance and I am more than happy with the results. I have a philosophy, a set of patterns, and codebase that works.
But I want to improve upon that, and part of my job is to choose the right direction in which to go. My framework (and derivatives of it) have been used in some fairly substantial products, and I have a list of ideas that will improve my codebase further.
Or, I can let go of my own work, and choose the path of complete automation and (for a while) be a novice in my chosen profession while I learn new paradigms and let go of old patterns.
I can't tell if its pride or common sense that tells me I should improve upon the things that have worked for me in the past, and err on the side of flexibility.
What has been your experience in moving from custom solutions to an entity management system (.Net EF or otherwise)? Is it worth abandoning something that works? Can such a philosophy scale to the most complex of projects?