Ich arbeite für einen Kunden, der ein großes Projekt hat, das Linq-to-SQL verwendet. Als das Projekt begann, war es die offensichtliche Wahl, weil Entity Framework zu diesem Zeitpunkt einige wichtige Funktionen fehlten 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 für hoch skalierbare Dienste sehr gut ist. Wir haben manchmal 100+ Anfragen pro Sekunde und obwohl wir unsere Datenbanken optimiert haben, dauern die meisten Abfragen immer noch mehrere Millisekunden. Aufgrund der synchronen Datenbankaufrufe ist der Thread blockiert und steht nicht für andere Anfragen zur Verfügung.
Wir denken darüber nach, auf Entity Framework umzusteigen, allein für diese Funktion. Es ist eine Schande, dass Microsoft die asynchrone Unterstützung nicht in Linq-to-SQL implementiert hat (oder als Open-Source zur Verfügung gestellt hat, damit die Community dies tun kann).
Nachtrag Dezember 2018: Microsoft bewegt sich in Richtung .NET Core und Linq-2-SQL wird von .NET Core nicht unterstützt, daher müssen Sie zu EF wechseln, um sicherzustellen, dass Sie in Zukunft zu EF.Core migrieren können.
Es gibt auch einige andere Optionen, die in Betracht gezogen werden können, wie zum Beispiel LLBLGen . Es ist eine ausgereifte ORM-Lösung, die schon lange existiert und sich als zukunftssicherer erwiesen hat als die MS-Datenlösungen (ODBC, ADO, ADO.NET, Linq-2-SQL, EF, EF.core).
145 Stimmen
Ich denke, dass die folgenden Antworten noch einmal überdacht werden sollten, da es schon lange her ist, dass EF veröffentlicht wurde, so dass neue Entwickler, die hierher kommen, einen falschen Eindruck bekommen können. EF ist seit seiner frühen Veröffentlichung ein GROSSARTIGES und EINFACHES Werkzeug geworden. Man muss nur die Verbindung zur DB einrichten und das ist zu 90% alles, was man braucht. Sehr schnelle Entwicklung, von einem erfahrenen Standpunkt aus gesehen! Von dort aus ist LINQ Ihr bester Freund. Es ist in hohem Maße anpassbar, MVC lieben es, und die Leute, die sagen, es ist schlecht - Lernen Sie, wie man es zuerst verwenden (und halten Sie auf LINQ als gut)!
11 Stimmen
Nur damit es klar ist - es ist nicht so, dass Sie jetzt die Wahl haben - MSFT hat LINQ2SQL zugunsten von EF effektiv abgeschafft. Allerdings hat die Tatsache, dass MSFT EF als Open Source zur Verfügung stellt, dazu beigetragen, dass es weniger schlecht ist und definitiv besser wird. Aber für alle, die sich für EF interessieren, sei gesagt, dass es immer noch eine Menge Macken in EF gibt. Ich habe über eine gepostet - stackoverflow.com/questions/305092/
5 Stimmen
@kape123, (a) LINQ to SQL ist nicht "tot"; es ist immer noch verwendbar; (b) LINQ to SQL ist die Standardmethode für den Datenzugriff bei der Entwicklung von Windows Phone 8.
1 Stimmen
@Kyralessa Ich habe gerade diesen Thread ausgegraben. LINQ to SQL ist "tot" wie in, ist nicht offiziell von Microsoft unterstützt.
10 Stimmen
@user3308043, [Quellenangabe erforderlich].
4 Stimmen
@Kyralessa - Ab 2010 (mit der Veröffentlichung von .NET4.0, das letzte Zitat, das ich finden konnte), Die MS bestätigten, dass Während einige Investitionen in LINQ2SQL getätigt werden können, "wird der Großteil unserer Gesamtinvestitionen in das Entity Framework fließen."
3 Stimmen
@HameedSyed, das ist nicht wahr, es ist Dapper Es wurde sogar von SO (Sam Saffro) entwickelt.
0 Stimmen
Der einzige Unterschied, der heute zählt, ist: LINQ-to-SQL ist tot, EF lebt und ist quicklebendig.