not a complete list
LinqToSQL
Pro:
- better tool support
- good linq provider
- easy to start with when db-schema == classes -
Con:
- not flexible (ie db-schema != classes)
- only supports MS SQL Server
- no cascading (save, update ... doesnt cascade to referenced objects)
NHibernate
Pro:
- a lot rdbms supported ootb
- feature rich
- very flexible for almost all corner cases
- open source
Con:
- not so easy to start with
- not from MS
- there are many tools, but you have to search for
Between the 2 ORMs
i would choose LinqToSql if:
- db-schema == classes
- only ever use MS SQL Server
- shop only allows MS-Products
i would choose Nhibernate if:
- richer objectmodel
- legacy db-schema
- DB other than MS SQL Server or support multiple
- performance critical (i think NH has more features to optimise performance than LinqToSql)
NOTE: this is my personal view. I deal mostly with (crazy) legacy dbs and complex ETL jobs where the object model helps a lot over SQL.