I keep getting asked this one. I have my own way of answering which ultimately ends up with “LINQ to Entities is the right choice for majority of scenarios, just expect a little pain”. In slightly more detail:
- If you only care about SQL Server AND you have complete control of the “shape” of the db schema AND the application will live at most a few years, then LINQ to SQL is a good choice. LINQ to Entities would also work.
- If you have virtually no control of the “shape” of the db schema OR you are working against a RDBMS other than SQL Server OR you are building an application that will live many years, then LINQ to Entities is the best choice
However I thought it was time I had a look for an “official” answer. In Jan 2008 Elisa published a document on “LINQ to Relational” covering both technologies which contained the following two tables.
LINQ to SQL
LINQ to Entities