The approach you discuss is considered a good one by many folk, me included! Learning this approach will require some effort, but don't let that put you off!
What about just trying a small project with LINQ to SQL? Perhaps find a nice reference project on google code, and study how others have worked with it.
It's a simple tool, and will let you become familiar with some of the issues that come up with mapping objects to databases.
You will then be able to get a feel for it, and decide if it's worth the learning curve.
There will be new concepts to grasp and experiment with, things like:
- Unit of Work: When you execute Save and Delete etc, an ORM tends to not do this immediately, whereas a recordset based DAL will. This can be surprising so you'll need to learn a bit about that. Read up on the Unit of Work pattern to get an understanding of this.
- Bulk Operations are an issue with OR/M. A data reader can efficiently iterate through thousands of rows, but with an ORM you have to be careful when working with large batches of objects. Again, one to read up on.
- Associations seem great when can do stuff like
customer.Orders.Count
but they are also the cause of many problems. You'll need to find some safe practices to follow when working with associations.
...to name a few.
For starters, don't worry about inheritance and stuff, just start simple and have simple entities that map to tables.
Try using them in the same way you'd use your existing DAL. Then start experimenting with associations.
Then perhaps try putting more behaviour in your entities. If you start liking this, and feel that you need more features, consider trying out a more feature-rich ORM like Lightspeed or NHibernate.
Hope this helps!