Я працюю для замовника, який має великий проект, який використовує Linq-to-SQL. Коли проект розпочався, це був очевидний вибір, оскільки в Entity Framework в той час бракувало деяких основних функцій, а продуктивність Linq-SQL була набагато кращою.
Зараз EF розвинулася, і Linq-SQL не вистачає підтримки для асинхронізації, що чудово підходить для високомасштабних сервісів. Іноді у нас є 100+ запитів в секунду, і, незважаючи на те, що ми оптимізували наші бази даних, для більшості запитів все ще потрібно кілька мілісекунд. Через синхронні дзвінки до бази даних, потік блокується та недоступний для інших запитів.
Ми думаємо перейти на Entity Framework, виключно для цієї функції. Прикро, що Microsoft не застосувала підтримку асинхронізації в Linq-to-SQL (або з відкритим джерелом, щоб громада могла це зробити).
Додаток грудень 2018: Microsoft рухається до .NET Core і Linq-2-SQL не підтримує .NET Core, тому вам потрібно перейти до EF, щоб переконатися, що ви зможете перейти до EF.Core в майбутньому.
Існують також деякі інші варіанти, які слід врахувати, наприклад, LLBLGen . Це зріле рішення ORM, яке існує вже давно і було доведено більш надійним у майбутньому, ніж рішення даних MS (ODBC, ADO, ADO.NET, Linq-2-SQL, EF, EF.core).