LINQ to SQL and ADO.NET Entity Framework are extensions of ADO.NET and are introduced to avoid difficulties involved in writing programs using object oriented programming languages to access data residing in RDBMS. Both have provided mechanisms to de-couple pure business logic and underlying data access logic (which is provided within the framework) with the help of LINQ (Language-Integrated Query) and thus allowing to query data using programming language’s own syntax. Thus both allow representing data in the relational database as business objects and also represent relations within the objects (including inheritance).
While speaking about similarities or differences, we understand that ADO.NET Entity Framework’s LINQ to Entities can be considered as superset of LINQ to SQL and that, ADO.NET Entity Framework is much more than LINQ to Entities.
LINQ to SQL can be used for rapid application development while ADO.NET Entity Framework can be used for enterprise application development.
LINQ to SQL can only support MS SQL Server database (also its compact version) however, external vendors are developing data providers for MySQL, Oracle, Postgres, etc. ADO.NET Entity Framework is built on top of ADO.NET data provider model and thus supports all existing ADO.NET data providers.
LINQ to SQL allows developers to generate .NET classes that directly map respective database tables or views. This leads to 1:1 mapping between class and table. This means that it looses the flexibility of an object representing a part of table or one object representing data from multiple tables. On the other hand, ADO.NET Entity Framework allows developers to generate .NET classes that map to conceptual data model. This leads to m:n mapping between classes and tables and thus has the flexibility of an object representing a part of table or one object representing data from multiple tables. Due to this flexibility, DBA can make changes to the database for improving performance, partitioning, etc. without affecting business logic.
Thus LINQ to SQL is targeted for developing rapid applications which can support MS SQL database and have simple mapping of business objects to relational data while ADO.NET Entity Framework is targeted for developing Enterprise applications which can support MS SQL databases as well as other databases through extended ADO.NET data provider and also have complex mapping of business objects to the persistent data.