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.
database-development
Amir Rezaei
quelle
quelle
Antworten:
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.
quelle
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
undEntityRef
) 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 .
quelle
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.
quelle
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.
quelle
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 :)
quelle