Die Antworten hier haben viele der Unterschiede zwischen Linq2Sql und EF abgedeckt, aber es gibt einen wichtigen Punkt, dem nicht viel Aufmerksamkeit geschenkt wurde: Linq2Sql unterstützt nur SQL Server, während EF Anbieter für die folgenden RDBMS hat:
Zur Verfügung gestellt von Microsoft:
- ADO.NET-Treiber für SQL Server, OBDC und OLE DB
Über Drittanbieter:
- MySQL
- Oracle
- DB2
- VistaDB
- SQLite
- PostgreSQL
- Informix
- U2
- Sybase
- Synergex
- Feuervogel
- Npgsql
um nur einige zu nennen.
Dies macht EF zu einer leistungsstarken Programmierabstraktion über Ihren relationalen Datenspeicher, d. h. Entwickler können unabhängig vom zugrunde liegenden Datenspeicher mit einem einheitlichen Programmiermodell arbeiten. Dies kann sehr nützlich sein, wenn Sie ein Produkt entwickeln, bei dem Sie sicherstellen wollen, dass es mit einer breiten Palette gängiger RDBMS zusammenarbeitet.
Eine andere Situation, in der diese Abstraktion nützlich ist, ist die, in der Sie Teil eines Entwicklungsteams sind, das mit einer Reihe verschiedener Kunden oder verschiedener Geschäftseinheiten innerhalb einer Organisation arbeitet, und Sie die Produktivität der Entwickler verbessern wollen, indem Sie die Anzahl der RDBMS reduzieren, mit denen sie sich vertraut machen müssen, um eine Reihe verschiedener Anwendungen auf verschiedenen RDBMS zu unterstützen.
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.