Entity Framework and LINQ To SQL are somewhat similar, and can be used in a very similar way, code-wise, but
they have some important differences. EF also uses LINQ. Some notable
differences are:
- LINQ to SQL is largely SQL Server only, not so much by design as by implementation. The EF is designed to support, and does support, multiple DBs, if you have a compatible ADO.NET provider.
- Out of the box, LINQ to SQL has a very poor story for DB metadata changes. You have to regenerate parts of your model from scratch, and you lose customizations.
- The EF supports model features like many-to-many relationships and inheritance. LINQ to SQL does not directly support these.
- In .NET 3.5, LINQ to SQL had much better support for SQL-Server-specific functionality than the EF. This is mostly not true in .NET 4; they're fairly similar in that respect.
- The EF lets you choose Model First, DB First, or Code First modelling. LINQ to SQL, out of the box, really only supports DB First.
For
new development, EF is the recommended technology. LINQ to SQL is not
being actively enhanced anymore.
References: