Ich arbeite für Kunden, die ein großes Projekt haben, das Linq-to-SQL verwendet. Als das Projekt begann, war es die offensichtliche Wahl, da Entity Framework zu diesem Zeitpunkt einige wichtige Funktionen fehlte und die Leistung von Linq-to-SQL viel besser war.
Jetzt hat sich EF weiterentwickelt und Linq-to-SQL fehlt die asynchrone Unterstützung, was sich hervorragend für hoch skalierbare Dienste eignet. Manchmal haben wir mehr als 100 Anfragen pro Sekunde und obwohl wir unsere Datenbanken optimiert haben, dauern die meisten Abfragen noch einige Millisekunden. Aufgrund der synchronen Datenbankaufrufe ist der Thread blockiert und für andere Anforderungen nicht verfügbar.
Wir denken darüber nach, ausschließlich für diese Funktion auf Entity Framework umzusteigen. Es ist eine Schande, dass Microsoft keine asynchrone Unterstützung in Linq-to-SQL implementiert hat (oder Open-Source-Unterstützung, damit die Community dies tun kann).
Nachtrag Dezember 2018: Microsoft wechselt zu .NET Core, und Linq-2-SQL wird in .NET Core nicht unterstützt. Sie müssen daher zu EF wechseln, um sicherzustellen, dass Sie in Zukunft auf EF.Core migrieren können.
Es sind auch einige andere Optionen zu berücksichtigen, z. B. LLBLGen . Es handelt sich um eine ausgereifte ORM-Lösung, die bereits seit langem existiert und sich als zukunftssicherer erwiesen hat als die MS-Datenlösungen (ODBC, ADO, ADO.NET, Linq-2-SQL, EF, EF.core).