Frage Entity Framework vs LINQ to SQL


Jetzt, da .NET v3.5 SP1 veröffentlicht wurde (zusammen mit VS2008 SP1), haben wir nun Zugriff auf das .NET-Entity-Framework.

Meine Frage ist das. Wenn Sie sich zwischen der Verwendung von Entity Framework und LINQ to SQL als ORM entscheiden, was ist der Unterschied?

So wie ich es verstehe, ist das Entity Framework (wenn es mit LINQ zu Entitäten verwendet wird) ein "großer Bruder" von LINQ to SQL? Wenn dies der Fall ist - welche Vorteile hat es? Was kann es tun, was LINQ to SQL alleine nicht kann?


750
2017-08-12 11:04


Ursprung


Antworten:


LINQ to SQL unterstützt nur eine 1: 1-Zuordnung von Datenbanktabellen, Ansichten, Sprocs und Funktionen, die in Microsoft SQL Server verfügbar sind. Es ist eine großartige API für den schnellen Datenzugriff auf relativ gut gestaltete SQL Server-Datenbanken. LINQ2SQL wurde zuerst mit C # 3.0 und .Net Framework 3.5 veröffentlicht.

LINQ to Entities (ADO.Net Entity Framework) ist eine ORM-API (Object Relational Mapper), die eine breite Definition von Objektdomänenmodellen und deren Beziehungen zu vielen verschiedenen ADO.Net-Datenanbietern ermöglicht. Daher können Sie verschiedene Datenbankanbieter, Anwendungsserver oder Protokolle kombinieren und abgleichen, um ein aggregiertes Mashup von Objekten zu erstellen, die aus einer Vielzahl von Tabellen, Quellen, Diensten usw. erstellt werden. ADO.Net Framework wurde mit veröffentlicht das .Net Framework 3.5 SP1.

Dies ist ein guter einführender Artikel auf MSDN: Einführung von LINQ in relationale Daten


442
2017-09-21 03:22



Ich denke, die schnelle und schmutzige Antwort ist das

  • LINQ to SQL ist die schnelle und einfache Möglichkeit, dies zu tun. Dies bedeutet, dass Sie schneller arbeiten und schneller liefern, wenn Sie an etwas kleinerem arbeiten.
  • Entity Framework ist der uneingeschränkte Weg, dies zu tun. Dies bedeutet, dass Sie mehr Zeit in Anspruch nehmen, sich langsamer entwickeln und mehr Flexibilität haben, wenn Sie an etwas Größerem arbeiten.

188
2017-08-12 16:00



Ist LINQ to SQL wirklich tot? von Jonathan Allen für InfoQ.com

Matt Warren beschreibt [LINQ to SQL] als etwas, "das niemals existieren sollte". Im Grunde sollte es nur ein Stand-in sein, um ihnen zu helfen, LINQ zu entwickeln, bis das echte ORM fertig war.

...

Die Skalierung von Entity Framework hat dazu geführt, dass die .NET 3.5 / Visual Studio 2008 Frist nicht erreicht wurde. Es wurde rechtzeitig für das leider benannte ".NET 3.5 Service Pack 1" fertiggestellt, das eher eine Hauptversion als ein Service Pack war.

...

Entwickler mögen [ADO.NET Entity Framework] wegen der Komplexität nicht.

...

Ab .NET 4.0 wird LINQ to Entities die empfohlene Datenzugriffslösung für LINQ für relationale Szenarien sein.


103
2017-11-03 15:53



Es gibt eine Anzahl von offensichtlichen Unterschieden, die in diesem Artikel beschrieben sind, aber kurze Antwort ist:

  • L2S ist eng gekoppelt - Objekteigenschaft für ein bestimmtes Datenbankfeld oder korrekteres Objektmapping für ein bestimmtes Datenbankschema
  • L2S funktioniert nur mit SQL Server (soweit ich weiß)
  • EF ermöglicht das Zuordnen einer einzelnen Klasse zu mehreren Tabellen
  • EF wird M-M-Beziehungen handhaben
  • EF kann auf jeden ADO.NET-Datenanbieter abzielen

Die ursprüngliche Prämisse war L2S ist für Rapid Development und EF für mehr "Enterprise" N-Tier-Anwendungen, aber das ist L2S ein wenig zu verkaufen.


85
2017-08-12 11:15



LINQ zu SQL

  1. Homogene Datenquelle: SQL Server
  2. Empfohlen für kleine Projekte nur dort, wo die Datenstruktur gut gestaltet ist
  3. Die Zuordnung kann geändert werden, ohne dass Sie mit SqlMetal.exe neu kompilieren müssen
  4. .dbml (Datenbankauszeichnungssprache)
  5. Eins-zu-eins-Zuordnung zwischen Tabellen und Klassen
  6. Unterstützt TPH Erbe
  7. Unterstützt keine komplexen Typen
  8. Storage-First-Ansatz
  9. Datenbank-zentrierte Ansicht einer Datenbank
  10. Erstellt von C # -Team
  11. Unterstützt, aber nicht weiter verbessert

Entitätsrahmen

  1. Heterogeneus Datenquelle: Unterstützen Sie viele Datenanbieter
  2. Empfohlen für alle neuen Projekte außer:
    • kleine (LINQ to SQL)
    • Wenn die Datenquelle eine flache Datei ist (ADO.NET)
  3. Die Zuordnung kann geändert werden, ohne dass beim Modellieren und Zuordnen von Dateien Metadaten-Artefaktprozess zum Kopieren in das Ausgabeverzeichnis neu kompiliert werden muss
  4. .edmx (Entity Data Model), das enthält:
    • SSDL (Speicherschema-Definitionssprache)
    • CSDL (Konzeptschema-Definitionssprache)
    • MSL (Mapping-Spezifikationssprache)
  5. Eins-zu-eins-Eins-zu-viele-Zuordnungen zwischen Tabellen und Klassen
  6. Unterstützt Vererbung:
    • TPH (Tabelle pro Hierarchie)
    • TPT (Tabelle pro Typ)
    • TPC (Tabelle pro Betonklasse)
  7. Unterstützt komplexe Typen
  8. Code-first, Model-first, Storage-first-Ansätze
  9. Anwendungszentrische Ansicht einer Datenbank
  10. Erstellt von SQL Server-Team
  11. Zukunft der Microsoft Data APIs

Siehe auch:


55
2018-04-21 08:26



Meine Erfahrung mit Entity Framework war weniger als hervorragend. Zuerst müssen Sie von den EF-Basisklassen erben, also verabschieden Sie sich von POCOs. Dein Entwurf muss um den EF herum sein. Mit LinqtoSQL konnte ich meine bestehenden Geschäftsobjekte verwenden. Außerdem gibt es kein Lazy Loading, das müssen Sie selbst implementieren. Es gibt einige Workarounds, die POCOs und Lazy Loading verwenden, aber sie existieren IMHO, weil EF noch nicht fertig ist. Ich habe vor, nach 4.0 wieder darauf zurückzukommen


49
2017-12-08 03:50



Ich habe eine sehr gute Antwort gefunden Hier was erklärt, wann man was in einfachen Worten benutzt:

Die grundlegende Faustregel für welches Framework zu verwenden ist, wie Sie planen   Bearbeiten Sie Ihre Daten in Ihrer Präsentationsebene.

  • Linq-zu-Sql - Verwenden Sie dieses Framework, wenn Sie eine Eins-zu-eins-Bearbeitung planen   Beziehung Ihrer Daten in Ihrer Präsentationsebene. Ich meine dich   Planen Sie nicht, Daten aus mehr als einer Tabelle in einer einzigen Ansicht zu kombinieren   oder Seite.

  • Entitätsrahmen - Verwenden Sie dieses Framework, wenn Sie planen   Kombinieren von Daten aus mehr als einer Tabelle in Ihrer Ansicht oder Seite. Zu machen   diese klarere, die oben genannten Bedingungen sind spezifisch für Daten, die sein werden   manipuliert in Ihrer Ansicht oder Seite, nicht nur angezeigt. Das ist   wichtig zu verstehen.

Mit dem Entity Framework können Sie tabellarische Daten zusammenführen   der Präsentationsebene in einer bearbeitbaren Form und dann präsentieren   Wenn dieses Formular übermittelt wird, kann EF alle Daten aktualisieren   von den verschiedenen Tischen.

Es gibt wahrscheinlich genauere Gründe, EF über L2S zu wählen, aber   Das wäre wahrscheinlich der leichteste zu verstehen. L2S nicht   haben die Möglichkeit, Daten für die Darstellung von Ansichten zusammenzuführen.


44
2018-03-23 15:52