Ist LINQ to SQL tot?


17

Gibt es einen Grund, Linq to SQL weiterhin zu verwenden, oder ist es besser, auf ORM-Techniken wie EF, NHibernate usw. umzusteigen?

Wir verwenden Linq to SQL in einer neuen großen Unternehmensanwendung, die noch lange bestehen wird. Die Motivation für diese neue Unternehmensanwendung ist, dass die Anwendung normal in Visual Basic geschrieben wurde, und da Microsoft den Support eingestellt hat, mussten wir die Anwendung neu schreiben. Es scheint, dass wir schon da sind, aber diesmal mit unserer DAL (Data Access Layer).

Ich habe diesen Artikel bereits gelesen , aber er ist nur mit der Schwäche von EF vergleichbar.


Das ist faszinierend für mich. Ich habe darüber nachgedacht, meine gespeicherten Prozeduren und parametrisierten SQL-Abfragezeichenfolgen zur besseren Lesbarkeit auf LINQ to SQL zu verschieben. Ich hatte keine Ahnung, dass sie nicht mehr entwickelt wurden.
Fearoffours

MS hat eine kleine Art von .NET 4-Diashow, die besagt, dass sie nicht tot ist - aber das kann viele Dinge bedeuten. Sie haben es in .NET 4.0 verbessert: damieng.com/blog/2009/06/01/linq-to-sql-changes-in-net-40
MetalMikester 13.11.10

Nicht noch einmal. Diese Frage wurde ad-nauseum auf StackOverflow diskutiert . Kannst du FUD sagen?
Robert Harvey

Antworten:


11

Wenn Sie es bereits verwenden und auf keine Schwierigkeiten stoßen, bleibe ich bei bestehenden Projekten.

Linq2SQL ist ein hübsches, aber begrenztes ORM - wenn Sie Ihre Objekte auf komplexere Weise abbilden wollen als die von Linq2SQL bereitgestellten, dann werden Sie stecken bleiben. Microsoft hat einige Fehler behoben, als sie mit .net 4 herauskamen, hat jedoch angegeben, dass sie keine Ressourcen für die Erweiterung verwenden werden.

Ich würde sagen, wenn Sie ein ziemlich einfaches Projekt haben, das möglicherweise eine begrenzte Lebensdauer hat, ist Linq2SQL eine gute Wahl, solange Sie darauf achten, dass Sie nicht überall Abhängigkeiten zu Linq2SQL verlieren. Für alles andere würde ich mich für etwas anderes entscheiden (NHibernate oder EF zum Beispiel), da Linq2SQL so ziemlich eine Sackgasse ist.


Ich kann nur zustimmen, nicht wirklich tot, aber es liegt irgendwie auf dem Tisch in der Triage. Wenn etwas funktioniert und es eine enorme Auswirkung hat, es jetzt zu ändern ... nun, Sie möchten sich vielleicht etwas zurücklehnen und einen guten Zeitpunkt suchen, um die Umstellung auf EF / NHibernate durchzuführen Alle wollen einen Job (Brot und Butter auf dem Tisch).
Cyber-12.11.10

@cyberzed: Das klingt nach einer guten Entschuldigung für unnötige Arbeit.
Robert Harvey

12

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 ( EntitySetund 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 .


2

Es ist nicht tot, da es immer noch funktioniert, aber wenn es nicht weiterentwickelt wird, kann es Sinn machen, zu etwas anderem überzugehen.

Wenn es jedoch für Ihre Anwendung funktioniert, macht es keinen Sinn, Änderungen vorzunehmen.


2

stabiler als tot imho:

http://www.thinqlinq.com/default/LINQ-to-SQL-enhancements-for-2010.aspx

http://jonkruger.com/blog/2009/06/06/linq-to-sql-is-not-dead/

Sie haben ihre Verbesserungsbemühungen auf Entity Framework verlagert, wo es wirklich notwendig ist, damit dieses Produkt erfolgreich ist. Erwarten Sie für eine Weile nichts Neues als Kompatibilität und Fehlerbehebung auf linq2sql.

Diese Seite wird mit viel linq2sql betrieben, wenn ich mich nicht irre.


+1 für "stabil" Beste Möglichkeit, L2S anzuzeigen, imho. Stabil und wird nicht mehr erweitert / geändert.
Quentin-Starin

Tut mir leid, aber "nichts Neues, aber Kompatibilität und Fehlerbehebung" bedeutet "in Containment". Das ist im Grunde genommen eine Garantie dafür, dass sich die Community von ihr entfernt. Sie werden nicht viele neue Projekte sehen, die sie verwenden, und Sie werden sie wahrscheinlich auch nicht in neuen Projekten verwenden wollen. "Dead" bedeutet nicht, dass es nicht funktioniert, es bedeutet nur, dass es wenig Innovation oder Interesse gibt.
Jeremy

Aus Sicht eines großen Unternehmens bedeutet die Tatsache, dass der Kern nicht mehr geändert wird, dass er in vielen Fällen endgültig in die Liste der zugelassenen Techniken aufgenommen werden kann. Darauf haben wir in meiner Branche schon länger gewartet. EF ist immer noch zu volatil, um darauf zuzugreifen, und L2S wird in Situationen, in denen der Overhead von EF nicht erwünscht ist, immer auf Interesse stoßen.
Bill

@ Jeremy Verwenden die Leute immer noch TeX?
Alternative

1

Es ist seltsam, aber ich habe diese Formulierung oft gesehen („LINQ2SQL ist tot“) und ich bin mir nicht sicher, woher sie stammt *. Es ist genauso tot wie Windows XP. Microsoft hat den Support eingestellt und etwas Neues geschaffen (und in meinen Augen besser), aber die Leute können immer noch XP verwenden, genauso wie sie Linq2SQL verwenden können. Zugegeben, ich benutze Linq2SQL beim Erstellen von benutzerdefinierten DotNetNuke-Modulen. Mit neuen Funktionen in EF4 wie Code-First-Development ( http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx) ) Es ist schwer Gründe zu finden, bei Linq2SQL zu bleiben. Ich sehe keinen Grund, den Code durchzuarbeiten und zu aktualisieren, aber für neuen Code weiß ich nicht, warum Sie EF4 nicht verwenden möchten.

* Ganz ehrlich, ich bin sehr… besessen von Semantik! Ich entschuldige mich, wenn es für andere ärgerlich ist :)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.