my team is starting a new project on asp.net mvc, and we are wondering what technology for data access to use, how do you think which one is the best, who has the best performance ? which one is easier to use and to maintain ?
My preference is LLBLGenPro - a really great ORM that just works like you'd expect. Its not based on configuration like entity framework or nhibernate, it generates your DAL based on your db (with much flexibility through their tools).
LINQ2SQL is probobly easiest to use. Entity Framework provides great extensability and the future release will contain alot of improvements.
One key rule for performance: write code that is easy to maintain, read and distribute; if it's to slow - optimize!
I think that the difference in performance between the ORMs today is bareley noticable, so you should pick the one that feels most comfortable and efficent to work with.
Entity Framework has better mapping of relationships than linq2sql (for example, it has multiple-multiple relationships).
I haven't used the other two, but I used Hibernate in Java and it was pretty straightforward to use.
This blog post compares various data technologies for .NET in various aspects (performance, maintainability, testability etc.). Might be of some help to your decision making process.
If .NET 4.0, choose between NHibernate or Entity Framework. NHibernate is more extensible and generally more feature rich. Entity Framework works better for firms that would rather have what Microsoft provides. They are both valid options and no one has yet published an objective significant blow by blow comparison. This is one of the better non-objective comparisons:
http://ayende.com/blog/archive/2010/01/05/nhibernate-vs.-entity-framework-4.0.aspx
If .NET 3.5 or earlier, choose NHibernate.
http://stackoverflow.com/questions/1238972/choosing-database-and-orm-for-a-net-project
http://stackoverflow.com/questions/567304/which-orm-tool-should-i-use-for-net-development
http://stackoverflow.com/questions/557948/easiest-to-learn-and-use-net-orm-framework
http://stackoverflow.com/questions/550929/some-suggestions-on-which-net-orm-to-look-at-learning
http://stackoverflow.com/questions/474973/best-orm-tool
http://stackoverflow.com/questions/380620/what-object-mapper-solution-would-you-recommend-for-net
http://stackoverflow.com/questions/249550/what-orm-frameworks-for-net-do-you-like-best
http://stackoverflow.com/questions/206197/best-free-orm-tools-to-use-with-net-2-0-3-5
http://stackoverflow.com/questions/132676/which-orm-for-net-would-you-recommend
After September 04, 2009:
http://stackoverflow.com/questions/1381916/or-mapping-tool
http://stackoverflow.com/questions/1443846/o-rm-choice-not-reliant-on-linq
http://stackoverflow.com/questions/1469761/nhibernate-vs-entity-framework-vs-something-better
http://stackoverflow.com/questions/1470787/how-to-choose-an-object-relational-mapping-for-net
That said, things change. Now that NHibernate supports Linq, I think NHibernate is the clear choice in the large majority of situations. For a longer and fairly up to date analysis, feel free to read this:
Take a look at Worm - free, open source object mapper. Besides relational mapping it supports hierarchical mapping (XPath mapping for xml data storage).