Worin besteht der Unterschied zwischen LINQ to SQL und LINQ to Entities?

LINQ to SQL ist im Prinzip eine ORM (Object Relational Mapping) Implementierung, die Ihnen erlaubt eine SQL Server Datenbank als .NET Objekte zu modellieren. Diese Modellierung, die einem Object einer Tabelle entspricht, kann mit Hilfe eines LINQ to SQL Designers (Teil von Visual Studio 2008) gemacht werden.

LINQ to Entities unterstützt ein flexibleres Mapping von Objekten zu Microsoft SQL Server und anderen relationalen Datenbanken durch erweiterte ADO.NET Data Providers. LINQ to Entities begann also mit höhergesteckten Zielen in Bezug auf Mapping und Datenbankunabhängigkeit und ist von grösserer Komplexität als LINQ to SQL.

Wenn Sie eine Anwendung schreiben, für die eines der folgenden Features benötigt wird, sollten Sie das ADO.NET Entity Framework verwenden:

  • Möglichkeit, flexibleres Mapping zu vorhandenen, relationalen Schemen zu definieren, z. B.:
    • Mapping zwischen einer einzelnen Klasse zu mehreren Tabellen
    • direkte Modellierung von n:n-Beziehungen
  • Möglichkeit, Abfragen in anderen relationalen Datenbanken als der Produktfamilie von Microsoft SQL Server vorzunehmen
  • Höhere Mapping-Flexibilität (wird oft bei komplexeren Projekten angefordert)

LINQ to SQL ist in Visual Studio 2008 integriert und als Bestandteil von .NET 3.5 enthalten (am Montag wurde der finale Release angekündigt). LINQ to Entities wird voraussichtlich in der ersten Hälfte des kommenden Jahres als Update des .NET Frameworks ausgeliefert.

In meinem letzten TechTalk habe ich mich mit LINQ to SQL und den neuen C# 3.0-Erweiterungen befasst. Falls Sie nicht an der Veranstaltung teilnehmen konnten oder einfach ein klares Verständnis von LINQ wünschen, gehen Sie auf diese Seite und melden Sie sich für unseres halbtägige LINQ Hands-on Lab an, das am 12. Dezember in Wallisellen stattfinden wird.