Es ist nicht tot, aber Microsoft konzentriert sich jetzt auf das Entity Framework.
Ich habe LINQ to SQL in kleinen Projekten verwendet, und es ist als kompakte Datenebene ganz nett, und ich würde in Betracht ziehen, es in Projekten ähnlicher Größe erneut zu verwenden. Die LINQ-Implementierung selbst ist wirklich gut und bis vor kurzem viel besser als das NHibernate LINQ-Projekt. Bei dem größeren Projekt, bei dem ich L2S verwendet habe, fiel es mir schwer, ein Muster für Arbeitseinheiten zu finden, mit dem ich zufrieden war, da die L2S-Klasse 'DataContext' Einschränkungen aufweist. Der Versuch, so etwas wie "Sitzung pro Anforderung" mit L2S zu implementieren, scheint entweder sehr schwierig oder unmöglich zu sein.
Ich würde L2S auch nicht wirklich als echtes ORM betrachten, da es Ihnen nicht wirklich viele Zuordnungsoptionen bietet. Ihr Klassendesign muss wirklich Ihrem Datenbankschema (Tabelle pro Klasse) folgen, da es sonst bei jedem Schritt des Weges mit Ihnen kämpft. Eine andere Sache, die ich an L2S nicht mag, ist die Notwendigkeit, bestimmte Typen ( EntitySet
und EntityRef
) zu verwenden, um Sammlungen, Referenzen und das verzögerte Laden zu handhaben. Dies bedeutet, dass es nicht möglich ist, Ihr Domain-Modell ORM-unabhängig zu halten, ohne eine weitere Abstraktionsebene hinzuzufügen.
Mein anderes Problem mit L2S ist die alleinige Abhängigkeit von LINQ, um Abfragen zu generieren. Der LINQ-Anbieter ist sehr gut geschrieben und erstellt im Allgemeinen für die meisten Abfragen angemessenes SQL. Ich habe jedoch Bedenken, dass es komplexere Abfragen gibt, die mit LINQ nicht gut ausgedrückt werden können. Wenn Sie L2S verwenden, müssen Sie in diesen Fällen grundsätzlich auf das Aufrufen gespeicherter Prozeduren zurückgreifen, wohingegen NHibernate über mehrere APIs (LINQ-Provider, QueryOver, HQL usw.) verfügt, die verwendet werden können, wenn Sie mehr Kontrolle über das generierte SQL haben möchten.
In L2S Verteidigung über NHibernate, gibt es viel weniger Aufwand in sie aufstehen und an einem Projekt ausgeführt wird .