Ist LINQ to SQL tot oder lebendig?

95

Gerade wenn ich mich mit LINQ to SQL anfreunde, sieht es so aus, als würde MS den Teppich darunter herausziehen.

http://blogs.msdn.com/adonet/archive/2008/10/29/update-on-linq-to-sql-and-linq-to-entities-roadmap.aspx

Nach meiner kleinen Recherche ist EF ein Übermaß für einfache Arbeit. Aber gibt es nach dieser Ankündigung einen Grund, LINQ to SQL weiterhin zu verwenden?

Sendet dies nicht über die Zukunft von LINQ to SQL hinaus im Allgemeinen ein schlechtes Signal? Ist es angesichts der Geschwindigkeit, mit der MS Bits gegen die Wand wirft, vernünftig, eines der neuen Bits frühzeitig zu verwenden? (und das ist nett, es ist kaum früh für LINQ to SQL!).

Für meine LINQ to SQL-Arbeit denke ich, dass ich zu SubSonic gehe!

Update: Ein paar neue Meinungen:

http://ayende.com/Blog/archive/2008/10/31/microsoft-kills-linq-to-sql.aspx

http://codebetter.com/blogs/david.hayden/archive/2008/10/31/linq-to-sql-is-dead-read-between-the-lines.aspx

rp.
quelle
Nichts in dieser Ankündigung sagte etwas darüber aus, dass LINQ oder LINQ to SQL weggehen ...?
Codewerks
5
@AugustLights Ich denke, was die Ankündigung sagt, ist, dass "wir LINQ nicht zu SQL entfernen werden, aber wir werden es über EF völlig ignorieren"
Jon Limjap
Jon - So habe ich es gelesen. In der Ankündigung heißt es: "... das Entity Framework wird unsere empfohlene Datenzugriffslösung für LINQ für relationale Szenarien sein." Das bedeutet Abschied, LINQ zu SQL.
rp.
4
MFC ist nicht tot, es ist einfach nicht die bevorzugte Lösung. Codieren Sie immer noch MFC? VB6 wird weiterhin unterstützt. Codieren Sie das? Es war schon immer so, MS macht was es will, nicht was Sie wollen.
Gbjbaanb
1
@rp: Was hast du unter DOA gemeint - Dead or Aliveoder Dead on arrival?
Abatishchev

Antworten:

64

1) Sie können Linq-to-SQL nicht "töten", da es bereits Teil des .net-Frameworks ist. Was sie tun können, ist aufhören, Funktionen hinzuzufügen. Das hindert die Tausenden von Entwicklern, die L2S bereits verwenden, nicht daran, es zu erweitern und zu verbessern. Einige Kernbereiche sind schwierig zu berühren, aber sie sind bereits solide und die fehlenden Designerfunktionen können leicht angeschraubt werden .

2) Eine der PDC-EF-Sitzungen zeigt, dass sie einige Lektionen aus dem EFv1-Fiasko gelernt haben und jetzt viele der Goodies von L2S in EF kopieren und einfügen und so tun, als wäre es neues EF-Zeug. Mit anderen Worten, L2S Version zwei wurde gerade EF "neu etikettiert".

3) LINQ als solches (Language Integrated Query) ist das Beste seit geschnittenem Eis und kann mit vielen anderen Dingen als L2S verwendet werden (Linq zu Objekten, Linq zu Entitäten, Linq zu XML, Linq zu allem) ). Der Versuch der DP-Gruppe, [die große Masse] L2S-Anwender zu [dem weniger populären und derzeit fehlerhaften] Entity Framework zu zwingen, ist also kein Grund, Linq nicht zu lernen.

Siehe auch diesen Thread (der meiner Meinung nach teilweise Tims Blog-Beitrag ausgelöst hat): http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=4061922&SiteID=1

Update 1: Die Dezember-Ausgabe 2008 der Titelgeschichte des Visual Studio Magazine von Roger Jennings ist eine gute Lektüre zu diesem Thema, mit einigen Vergleichen zwischen L2S und EF: http://visualstudiomagazine.com/features/article.aspx?editorialsid=2583

Update 2: Anders Hejlsberg wurde in den Redmond Developer News mit den Worten zitiert : " LINQ to SQL ist nicht tot. Ich kann Ihnen versichern, es ist nicht tot. Nichts geht jemals weg. Wir haben das nie getan und werden es nie tun. "

http://reddevnews.com/blogs/weblog.aspx?blog=3016

KristoferA
quelle
14
Die Entwickler von StackOverflow haben Linq to SQL als ORM ihrer Wahl übernommen. Anscheinend entschieden sie, dass die Vorteile die Gefahren überwogen.
Robert Harvey
Ist das noch wahr? Ich habe gehört, dass StackOverflow sich von L2S entfernt hat, diese Informationen jedoch nicht zu finden scheint.
Aaron
2
@ Aaron, ja, sie verwenden handgeschriebenes SQL mit ihrem eigenen Mikro-ORM namens Dapper. Möglicherweise verwenden sie weiterhin LINQ-to-SQL in den weniger beliebten Abschnitten der Site.
CMircea
28

Ihre Frage weist eine Mehrdeutigkeit auf, die gelöst werden muss.

LINQ! = LINQ zu SQL

Es gibt eine ganze Reihe von LINQ-Technologien und -Anbietern:

  • Linq zu SQL;
  • Linq zu Entitäten;
  • Linq zu Objekten;
  • Linq zu XML;

... und das sind nur die von Microsoft. Es gibt auch Nicht-MS-Anbieter, einschließlich NHibernate.

Der von Ihnen verlinkte Blog-Beitrag befasst sich nur mit Linq to SQL.

Der Hauptvorteil von LINQ besteht darin, dass Sie eine Abfragesyntax lernen, verwenden und für mehrere Technologien wiederverwenden können.

Vor diesem Hintergrund würde ich vorschlagen, dass ein vermeintlicher Mangel an Zukunft für "Linq To SQL" irrelevant ist, da die Fähigkeiten, die Sie beim Schreiben von LINQ-Abfragen erwerben, in Zukunft auf andere Tools übertragbar sind.

Bevan
quelle
Die SQL-Syntax von LINQ 2 ähnelt Entity Framework so weit, dass Sie problemlos zwischen den beiden wechseln können.
Jason Short
Seine Frage ist jedoch weiterhin gültig, da die tatsächliche Implementierung von LINQ in SQL einige spezifische Vorteile gegenüber SQL Server bietet.
Tor Haugen
21

Wir beenden LINQ to SQL nicht. Wir optimieren für EF, aber LINQ to SQL wird definitiv nicht getötet :)

- Scott / Microsoft.

Scott Barnes
quelle
Lol. das macht mich fertig. Mussten Sie die Genehmigung von Microsoft einholen, um diese öffentliche Erklärung abzugeben? : p
Kolob Canyon
wie? 2009 war das eine Nachricht, die das fragliche Team vermasselt hat, also musste ich sie beheben ... als Produktmanager von .net: D
Scott Barnes
13

Sie sollten nicht nur Linq (System.Linq.Enumerable und System.Linq.Queryable) lernen, sondern auch die Programmiersprachenerweiterungen für Ihre .net-Sprache lernen.

In C # 3.0 sind dies:

  • Erweiterungsmethoden (statische Methoden mit dem Schlüsselwort this im ersten Parameter)
  • Vom Compiler abgeleitete Typen (var)
  • Lambda-Syntax (die je nach Kontext eine anonyme Methode oder einen Ausdruck generiert)
  • Initialisierer
  • Standardimplementierung von Eigenschaften (eine Abkürzung)

Lesen Sie hier mehr .


In VB 9.0 gibt es einige Inline-XML-Magie und viele andere Dinge (viele ähneln der obigen Liste für C #).

Lesen Sie hier mehr .

Amy B.
quelle
Wow, ich muss einen wirklich wörtlichen Tag gehabt haben. Nur mit einer wirklich strengen, nicht kontextbezogenen Interpretation des Satzes, der die Frage ist, macht meine Antwort überhaupt Sinn.
Amy B
@ David B, ja .. Ich dachte, das ist eine gute Antwort, ich sehe nur nicht, wie es diese Frage beantwortet. lol
mmcdole
1
Es werden immer mehr Stimmen abgegeben. Ich denke, einige Leute müssen nur die Informationen in den Links sehen ... Wenn Ihnen diese Antwort gefallen hat, könnte Ihnen meine bessere Antwort hier gefallen
Amy B
8

Ich verstehe ehrlich gesagt nicht, wo in diesem Artikel Sie lesen, dass link2sql tot ist.

In dem Blog-Beitrag, den Sie verlinkt haben, heißt es:

Wir hören Kunden in Bezug auf LINQ to SQL zu und werden das Produkt basierend auf dem Feedback, das wir auch von der Community erhalten, weiterentwickeln.

Für mich liest sich so, als würde LINQ to SQL in Zukunft entwickelt und unterstützt. Ich frage mich, warum du denkst, dass es tot ist?

Sam
quelle
7

Zugegeben, ich denke, dass die Wahl zwischen LINQ zu SQL, LINQ zu Entities und LINQ zu [ORM von Drittanbietern einfügen] hier ein vollkommen gesundes Ökosystem von Methoden der Datenzugriffsschicht bietet, aus denen ein Softwareentwickler wählen kann. Drittanbieter wie NHibernate, LLBLGen und sogar Subsonic (nicht sicher, ob sie LINQ-Anbieter anbieten werden) werden die Konkurrenz definitiv besser und interessanter machen.

Trotzdem wird es für Microsoft total traurig sein, LINQ auf SQL zu verlassen, zumal es eine gute Anhängerschaft hat - sogar StackOverflow baut darauf auf.

Jon Limjap
quelle
6

Interessanter Blogbeitrag darüber. Und einige verwandte Informationen zu Stackoverflow-Posts .

Das Wesentliche scheinen Kommentare im ado.net-Blog zu sein , die besagen, dass das Entity Framework das einzige ist, was größere Entwicklerzeit für Visual Studio 2010 und Dot Net 4 erhält.

Meine Antwort ist - DUH. Das haben wir alle gewusst. Microsoft sagte auf der PDC 2007 öffentlich, dass LINQ to SQL eine kurzfristige Version für SQL Server sei, da es keine andere LINQ-Story für SQL Server gebe. Es funktioniert nur mit SQL Server. Sie können keinen LINQ an einen SQL-Anbieter schreiben - es gibt kein Modell dafür. Es war eine einmalige Technologie, nicht erweiterbar.

Das Entity Framework ist die EINZIGE Möglichkeit von Microsoft, einen LINQ-Anbieter zu erstellen. Das Entity Framework hat sich als ziemlich kontrovers erwiesen, aber ich denke, das liegt teilweise an der Tatsache, dass LINQ to SQL heute eine bessere Programmiererfahrung hat. Entity Framework wird LINQ to SQL abfangen und übertreffen, da es das ORM / Mapping-Tool der Zukunft von Microsoft ist.

BEARBEITEN - Ich habe dies in meinem Blog etwas ausführlicher beschrieben

EDIT2 - IQueryable Provider - ist NICHT dasselbe wie ein LINQ to SQL-Anbieter. Sie können Ihren eigenen IQueryable Provider für alles schreiben, was Sie möchten. Sie erhalten keine Designerunterstützung oder Modellgenerierung. Es gibt kein GUI-Designermodell, das mir bekannt ist, um LINQ mit der SQL-Modellgenerierung zu verknüpfen.

Jason Short
quelle
1
Betreff: "Sie können keinen LINQ an SQL-Anbieter schreiben - es gibt kein Modell dafür." Nun, das gibt es . Es ist nur so, dass sie beschlossen haben, die notwendigen Mitglieder in letzter Minute privat zu machen, um EF einen Vorteil zu verschaffen. Siehe blogs.msdn.com/mattwar/archive/2007/05/31/…
KristoferA
1
Entschuldigung, der vorherige Link sollte blogs.msdn.com/mattwar/archive/2008/05/04/…
KristoferA
Danke - hatte diesen Beitrag nicht gelesen. Ich wusste, dass es intern eine API gab, wusste aber nicht, ob diese jemals öffentlich bekannt gemacht wurde.
Jason Short
1
Im selben Blog ( blogs.msdn.com/mattwar ) finden Sie auch vollständige Artikelserien (mit Beispielen) zum Schreiben von Anbietern sowie einen steckbaren herunterladbaren L2S-Anbieter, den Sie möglicherweise nützlich finden.
KristoferA
Es spielt keine Rolle, ob Sie es hacken können - es wird NICHT offiziell von MS unterstützt. Sie haben KEINE VSIP-Integration dafür. Sie können kein Logo für Ihre App erhalten ...
Jason Short
5

Ich glaube, ich sehe das Problem hier nicht wirklich. Aus dem Artikel, den Sie verlinkt haben:

Wir hören Kunden in Bezug auf LINQ to SQL zu und werden das Produkt basierend auf dem Feedback, das wir auch von der Community erhalten, weiterentwickeln.

Vermisse ich etwas Wie entsteht der Eindruck, dass LINQ to SQL bei der Ankunft tot ist?

Gabriel Isenberg
quelle
4

Kann sich jemand an VB6 erinnern? Unabhängig davon, ob Sie es persönlich verabscheuen oder lieben, Microsoft hat Millionen von Exemplaren verkauft, und Unternehmen haben Millionen von Dollar ausgegeben, um Millionen von VB6-Zeilen zu schreiben. Was als nächstes geschah?

  • Nun, Microsoft unterstützt immer noch VB6 (irgendwie - nicht die IDE).
  • Und Microsoft sagt immer noch, dass sie VB6-Kunden auch jetzt noch hören ( im September 09 ).
  • Aber sind VB6-Kunden zufrieden? Nicht seit 2002 , 4 Jahre nach dem Start von VB6.
  • Warum nicht? Die Upgrade-Pfade für Ihre Code-Investition in die Ersatztechnologie VB.Net sind teuer .

Denken Sie also nur an diese Lektion. Mir scheint, dass die Unterstützung von LinqToSQL eher widerwillig sein wird. Sie sind verpflichtet, dies zu unterstützen, da es sich im aktuellen .NET-Framework befindet. Aber wird es in .NET 5, 6, 7 sein ...? Denken Sie nur daran, wie wichtig das für Sie ist (soweit ich weiß, ist es für Sie überhaupt nicht wichtig).

MarkJ
quelle
Für mich ist das Beste ado.net mit OracleConnection und SqlConnection, da dieser Anbieter und System.Data.DataSet niemals sterben. Ist die Basis von Tabellendaten. Persönlich Ich mag EF, aber professionelles DataSet ist weiterhin ein Standard.
Pedrofernandes
3

Vielleicht sollten Sie sich nicht die Mühe machen, Linq in SQL zu lernen, aber es gibt immer noch die Entities Linq, die sie behalten werden.

korro
quelle
1
Der derzeitige EF-Ansatz weist einige schwerwiegende Probleme auf, nicht zuletzt die erzwungene Basisklasse. Ich würde erwarten, dass EFvNext an manchen Stellen ganz anders aussieht. Bis dahin würde ich empfehlen, die einfachste Option zu verwenden: L2S - oder nHibernate ;-p
Marc Gravell
1
Sobald Sie sich mit LINQ vertraut gemacht haben, würde ich vorschlagen, dass das "Lernen" von LINQ in SQL ziemlich trivial ist. Es geht nur darum, Ihrem Projekt ein LINQ-Element für SQL-Klassen hinzuzufügen und einige Tabellen per Drag & Drop auf den Designer zu ziehen.
Richard Ev
3

Es ist offensichtlich, dass 2 ORMs eins zu viele in der Toolbox von Microsoft sind, aber für mich scheint es, dass das falsche Framework aus den falschen Gründen ausgewählt wurde. Die Tatsache, dass das C # -Team die Arbeit erledigt hat, die das ADO.NET-Team in viel kürzerer Zeit erledigen sollte, und die Arbeit viel besser gemacht hat, ist für das ado.net-Team schwer zu schlucken. Nicht dass ich die internen Abläufe der beiden Frameworks kenne, aber ich denke, es wäre viel schneller, die Mängel von linq2sql auf das Entity-Framework zu aktualisieren.

Es scheint zu viel Politik zu geben, und ich denke, dies wird den Ruf von asp.net wirklich schädigen, da ich nicht darauf vertraue, dass das Entity-Framework uns eine ebenso benutzerfreundliche Erfahrung bietet wie Linq2sql. Das ado.net-Team könnte auch einige Kommunikationsfähigkeiten vom asp.net mvc-Team lernen, da die Klärungen des Problems bestenfalls vage sind.

Es würde Spaß machen zu erfahren, was Scott Gu und sein MVC-Team hier stehen, da die meisten ihrer Beispiele Linq2Sql verwenden.

Terjetyl
quelle
2

Es war immer etwas seltsam, dass es mit Linq 2 Sql und Entity Framework große Überlappungsbereiche gab. Ich denke, der einzige Grund, warum L2S es nur in die .NET 3.5-Version geschafft hat, war, dass es große Zweifel gab, dass EF jemals das Licht der Welt erblicken würde. Jetzt, da EF1 nicht mehr verfügbar ist, war L2S nicht mehr erforderlich.

Craig
quelle
2

(Nein, StingyJack, LINQ to SQL verwendet nicht das Entity Framework.)

Jedenfalls würde ich mir keine Sorgen machen. Tim gibt an, dass sie Kunden in Bezug auf LINQ to SQL zuhören. Nach der Begeisterung, die ich für L2S gesehen habe, werden die Kunden (das sind wir) ihre Meinung sagen.

Und wie KristoferA betont, können sie L2S nicht wirklich "töten", sondern nur einfrieren. Und L2S erfordert nach dem Polieren nicht wirklich viel Weiterentwicklung. Wenn der L2S-Anbieter eingerichtet ist, sollten alle Fortschritte in LINQ auch in L2S verfügbar sein. Die Wahl bleibt also weiterhin bei uns.

Tor Haugen
quelle
Nun, sie könnten es töten, indem sie es nicht in Dot Net 4 aufnehmen, das eine Side-by-Side-Installation sein soll. Was bedeuten würde, dass dot net 4-Apps keinen Zugriff darauf haben würden, ohne 3.5SP1 auf demselben Computer zu installieren - ich weiß nicht, ob das stimmt oder nicht.
Jason Short
Kann sich jemand an VB6 erinnern? Microsoft unterstützt weiterhin VB6 (Art). Sie sagen immer noch, dass sie VB6-Kunden auch jetzt noch zuhören. Aber sind wir glücklich? Nein. Die Upgrade-Pfade, um unseren Code zur Ersatztechnologie VB.Net zu bringen, sind teuer. Denken Sie also an diese Lektion: Überlegen Sie, ob LinqToSQL in .NET 4, 5, 6 enthalten sein wird und wie wichtig dies für Sie ist.
MarkJ