LINQ to SQL requires you to start with a database schema.
Not true – you can start with code and create mappings later. In fact, you can write plain-old CLR object like this:
… and later either create a mapping file (full of XML like <Table> and <Column>), or decorate the class with mapping attributes (like [Table] and [Column]). You can even use the mapping to create a fresh database schema via the CreateDatabase method of the DataContext class.
LINQ to SQL requires your classes to implement INotifyPropertyChanged and use EntitySet<T> for any associated collections.
Not true, although foregoing either does come with a price. INotifyPropertyChanged allows LINQ to SQL to track changes on your objects. If you don't implement this interface LINQ to SQL can still discover changes for update scenarios, but will take snapshots of all objects, which isn't free. Likewise, EntitySet provides deferred loading and association management for one-to-one and one-to-many relationships between entities. You can build this yourself, but with EntitySet being built on top of IList<T>, you'll probably be recreating the same wheel. There is nothing about EntitySet<T> that ties the class to LINQ to SQL (other than living inside the System.Data.Linq namespace).
LINQ to SQL has limitations and it's a v1 product, but don't think of LINQ to SQL as strictly a drag and drop technology.
Comments
I know Ian over at CodeBetter did some stuff like this and I haven't made it through his whole series, but it didn't impress me as something that would replace NHibernate as it was lacking several critical features.
Almost all the examples/samples I've seen of Linq2Sql are of the drag-n-drop-your-database-into-your-code ilk.
nHibernate is years ahead of L2S. The one advantage L2S has is its exteme simplicity (and not the drag and drop designer type). That's also one of it's big weaknesses - only basic mappings are available, only SQL Server is supported. If that's all you need its refreshingly light, and the standard LINQ operators make it easy to build repositories.
The main drawback that LINQ to SQL has in relation to the Entity Framework and NHibernate is the one-to-one table mapping requirement. It doesn't allow for the richer schema mappings without using views and stored procs.