One problem with Entity Framework is lack of alternative (not MS Sql Server) database support.<p>We are a Microsoft shop. However recently we've had to integrate with Oracle and now MySql. Oracle has just released beta support for EF: <a href="http://www.oracle.com/technetwork/topics/dotnet/downloads/oracleefbeta-302521.html" rel="nofollow">http://www.oracle.com/technetwork/topics/dotnet/downloads/or...</a><p>We have been Using Cool Storage (<a href="http://viciproject.com/wiki/projects/coolstorage/home" rel="nofollow">http://viciproject.com/wiki/projects/coolstorage/home</a>) for quite some time. Honestly, It's the best ORM I've ever used. It stays out of your way and it doesn't surprise you. It's very easy to set up.<p>I'm surprised it hasn't gained more popularity. Cool Storage is the reason I haven't kept up on EF and the changes to ADO.NET. Bonus: it works with Oracle and other non MSFT databases. Bonus++: It's open source.
(Disclaimer: MS Employee) - this release is actually pretty cool; you can create your models as regular classes and collections (with a very small number of annotations), and EF will create a schema on-the-fly, and new up MS's version of a Sqlite3 database as soon as the first request comes in.<p>Really great for F/OSS web projects on the MS stack since you don't have to perform the completely asinine step #1 of contributing, "Set up a SQL Express instance..."
It's great that there are plenty of options in the ORM space. I still use Castle's Active Record for larger projects, and EF Code First for small ones. I spent about a year learning to use NHibernate via CAR, and it was time well spent.<p>I catch glimpses that indicate EF has most of the features in NH, but I wouldn't want to learn another ORM in depth -- there's just no value in it.