Estoy trabajando para un cliente que tiene un gran proyecto que usa Linq-to-SQL. Cuando comenzó el proyecto, era la opción obvia, porque Entity Framework carecía de algunas características importantes en ese momento y el rendimiento de Linq-to-SQL era mucho mejor.
Ahora EF ha evolucionado y Linq-to-SQL carece de soporte asíncrono, lo cual es ideal para servicios altamente escalables. A veces tenemos más de 100 solicitudes por segundo y, a pesar de que hemos optimizado nuestras bases de datos, la mayoría de las consultas aún demoran varios milisegundos en completarse. Debido a las llamadas a la base de datos síncronas, el hilo está bloqueado y no está disponible para otras solicitudes.
Estamos pensando en cambiar a Entity Framework, únicamente para esta función. Es una pena que Microsoft no haya implementado el soporte asíncrono en Linq-to-SQL (o de código abierto, para que la comunidad pueda hacerlo).
Anexo Diciembre de 2018: Microsoft se está moviendo hacia .NET Core y Linq-2-SQL no es compatible con .NET Core, por lo que debe pasar a EF para asegurarse de que puede migrar a EF.Core en el futuro.
También hay algunas otras opciones a considerar, como LLBLGen . Es una solución ORM madura que existe desde hace mucho tiempo y se ha demostrado que está más preparada para el futuro que las soluciones de datos de MS (ODBC, ADO, ADO.NET, Linq-2-SQL, EF, EF.core).