Thomas Bandt

Über mich | Kontakt | Archiv

LINQ to SQL - mal näher betrachtet

Ich habe es jetzt nach Monaten voller Projekte mal geschafft, mich mit ein paar Neuerungen die Microsoft in den letzten Monaten (Jahren) auf den Weg gebracht hat, zu beschäftigen - hängen geblieben bin ich bei LINQ.

Meine ursprüngliche Skepsis verwischt langsam ein wenig, obwohl ich nach wie vor nicht so recht weiß was ich davon halten soll.

Ich denke es ist wie damals, als ich das erste Mal von ASP.NET gehört und die ersten Demos gesehen habe - da habe ich mich sofort gefragt, wer um alles in der Welt die Kontrolle über den generierten HTML- und CSS-Code aus der Hand geben will. Heute kann ich mir nicht mehr vorstellen z.B. Eingabevalidierungen ohne ValidationControls von Hand zu machen.

Das Gleiche ist es jetzt mit LINQ - seit über einem halben Jahrzehnt (noch gar nicht so lange also, aber lang genug um sich dran zu gewöhnen) erstelle ich meine SQL-Statements selbst, seit einigen Jahren ausschließlich in Stored Procedures. Es war für mich meistens lästiges Beiwerk, nicht zuletzt wegen der beschränkten Tools (bis heute gibt es für den SQL-Server meines Wissens nach kein vernünftiges IntelliSense!), aber dennoch hatte das alles einen Vorteil: ich habe annähernd bis ins letzte Detail gewusst, was passiert - keinen Overhead erzeugt, immer genau den Überblick gehabt - über jedes Feld, jede Tabelle.

Ich habe deshalb auch absichtlich auf (Typed) Datasets verzichtet, schon immer - warum denn bitte diese Masse an Code und performancefressenden Aktionen lostreten, nur um ein Feld aus einer Tabelle auszulesen?

Mit LINQ (to SQL) komme ich nun etwas ins Grübeln und mein sorgsam geschaffenes Weltbild gerät etwas ins Wanken.

Gründe:

Warum ich noch nicht vollends überzeugt bin:

Die Gretchenfrage:

Mein Weltbild sieht im Moment in den meisten Projekten 3+1 Schichten vor:

Mehrheitlich ist es zurückblickend so gewesen, dass die Objekte in der Datenbank (Tabellen) in etwa denen entsprachen, die ich auch in der Anwendung verwendet habe.

Da liegt jetzt der Gedanke nahe, um zur Gretchenfrage zu kommen, auf die eigenen Geschäftsobjekte zu verzichten und stattdessen ausschließlich die von LINQ to SQL generierten Objekte zu benutzen. Deren Naming kann man ja anpassen, genauso kann man sie erweitern, von anderen Basisklassen ableiten usw. Das ist vielleicht nicht besonders schön (weil man in die Autogenerierung eingreift), aber - da sind wir wieder bei den Validation-Controls - es spart wieder einiges an Zeit und Tipparbeit.

Gleichzeitig vermischt man aber letztlich wieder alles, weil man keine klare Trennung mehr hat - die Objekte werden schließlich vom "Data Layer" bereitgestellt, bzw. erzeugt.

Fragen über Fragen

Mal sehen für was ich mich entscheide, ich denke auf jeden Fall, dass sich ein Einsatz von LINQ to SQL im ein oder anderen Projekt dieses Jahr lohnt - spätestens dann bin ich auch schlauer, was sinnvoll ist und was sich in der Praxis als weniger tauglich herausstellt.

Wahrscheinlich werde ich aber eher bei meinem bewährten Modell bleiben und schlicht innerhalb der Methoden im Data Layer LINQ einsetzen.

Meinungen sind übrigens gerne willkommen - per Kommentar wie per Mail :-).

Kommentare

  1. Christoph Schmid schrieb am Samstag, 5. Januar 2008 20:22:00 Uhr:

    Hallo Thomas
    Zum Punkt Intellisense auf dem SQL Server. Kennst du SQL Prompt?
    http://www.red-gate.com/products/SQL_Prompt/index.htm
    Könnte evt. deine Anforderungen erfüllen.
    Gruss Christoph
  2. Thomas schrieb am Samstag, 5. Januar 2008 20:48:00 Uhr:

    Hallo, habe ich zu Betazeiten glaube ich mal probiert - die jetzige Demo schaut sehr gut aus, aber 130 Euro für eine Lizenz sind mir da zu happig.


« Zurück  |  Weiter »