Elisa Flasko from Microsoft Data Platform Team wrote a nice article "Introducing LINQ to Relational Data" highlighting main features or two main ORMs coming out form Microsoft with Visual Studio 2008 (ADO.NET EF is not released so far but it will be released as additional package to VS2008)
LINQ to SQL is applicable when:
- Use an ORM solution and my database is 1:1 with my object model
- Use an ORM solution with inheritance hierarchies that are stored in a single table
- Use my own plain CLR classes instead of using generated classes or deriving from a base class or implementing an interface
- Leverage LINQ as the way I write queries
- Use an ORM but I want something that is very performant and where I can optimize performance through stored procedures and compiled queries
LINQ to Entities is applicable when:
Write applications that can target different database engines in addition to Microsoft SQL Server
Define domain models for my application and use these as the basis for my persistence layer.
Use an ORM solution where my classes may be 1:1 with the database or may have a very different structure from the database schema
Use an ORM solution with inheritance hierarchies that may have alternative storage schemes (single table for the hierarchy, single table for each class, single table for all data related to specific type)
Leverage LINQ as the way I write queries and have the query work in a database vendor agnostic manner.
Use an ORM but I want something that is very performant and where I can optimize performance through stored procedures and compiled queries
Read article on MSDN or download Word 2007 version.