I'm relatively new to .NET and have being using Linq2Sql for a almost a year, but it lacks some of the features I'm looking for now.
I'm going to start a new project in which I want to use an ORM with the following characteristics:
- It has to be very productive, I don't want to be dealing with the access layer to save or retrieve objects from or to the database, but it should allows me to easily tweak any object before actually commit it to the database; also it should allows me to work easily with a changing database schema
- It should allows me to extend the objects mapped from the database, for example to add virtual attributes to them (virtual columns to a table)
- It has to be (at least almost) database agnostic, it should allows me to work with different databases in a transparent way
- It has to have not so much configuration or must be based on conventions to make it work
- It should allows me to work with Linq
So, do you know any ORM that I could use? Thank you for your help.
EDIT I know that an option is to use NHibernate. This appears as the facto standard for enterprise level applications, but also it seems that is not very productive because its deep learning curve. In other way, I have read in some other post here in SO that it doesn't integrate well with Linq. Is all of that true?