HV-Lima Peru

Offshore your .NET/SQL Development to Latin America! Languages: en-de-es

Category Archives: LINQ

How to Linq ListBoxes with Except

There is a cool way to query ListBoxes with Linq.

Imagine there are three ListBoxes:
– A: with all currencies
– B: with selected currencies
– C: with available currencies, like A:.Except(B:)

The content of the visible ListBoxes is like:

For better comprehension I’ve created two sets (that do not materialize):
– Line 253: selectedCurrencies
– Line 255: allCurrencies

The resulting availableCurrencies are built in line 257…

…and materialized at the arrow

Example for Deferred Execution in Linq

Both examples use the AdventureWorks DB on SQL Server 2008 and the Entity Framework 4.0

1. Deferred Execution

In the first case the query is armed in line 23, but not materialized.

In line 27 result is “Bothell” (see watch on the right side)
Then there is done an update in line 32.
In line 35 the result is Berlin.

This shows clearly, that the execution of the query is deferred to the moment of enlisting.

2. NOT deferred Execution

In this case in the formulation of the query the result is materialized by calling the extension .ToList() in line 43.

Result in line 47 gives back “Bothell” as like Result2 in line 55, despite of having changed the address to Berlin in the meantime!

 

Das .NET Language Integrated Query Framework

Mit Daten arbeiten – aber wie?
Webcast vom 02.11.2007 in deutscher Sprache
Super, super, super gemacht von Jens Häupel,
Developer Evangelist Microsoft Deutschland.
Das .NET Language Integrated Query Framework
Pre-Requisite ist aber auf jeden Fall:
Die Spracherweiterungen in C# 3.0

C# 3.0 Spracherweiterungen als Pre-Requisites zu LINQ


Wichtig für die C#-Programmierer:
UNBEDINGT zuerst diesen Webcast angucken BEVOR man sich mit LINQ beschäftigt!

Wie wäre es mit:
Typinferenz                (the variable type is inferred by the compiler)
Anonyme Typen         (var)
Extension-Methoden  (string.function1.function2)
Lambda-Ausdrücke    (=>)

und schon haben wir die Neuerungen in C# 3.0 um die Wahnsinns-Syntax im Bild unten zu kapieren.

DAS ist die GRUNDLAGE um dann in LINQ zu programmieren.

Denn dort weiss man im Vorneherein eben nicht, was genau für Typen zurückkommen.
Aber das ist weiter nicht schlimm, denn der wirklich perfekte Webcast (in deutscher Sprache) ist von
Bernd Marquardt, vom 12.11.2007.
C# 3.0 – Die Standard Spracherweiterugen

LINQ, Stichwort: Stored Procedure Recompilation

There was no time to translate these thoughts to English, sorry for that!

Hier meine aktuelle Meinung zu LINQ mit Ausholer:
(siehe auch allerletzten Satz ganz unten: …LINQ ist m.E. gar nicht das Problem…)

Wenn man Performance will oder die Logik nicht rausgeben kann, ist es sicher besser eine Stored Proc zu schreiben, die dann von einem DBA optimiert wird.

Es gibt da nämlich so viele Haken.
Allein was die Stored Proc-Recompilation betrifft, siehe im Anhang ganz unten.

Ansonsten:

Pro für LINQ:

Wer sich nicht mehr mit XPath und XQuery auseinandersetzen will, kann das alles mit LINQ abstrahieren, wobei die Queries dann auch gleich für andere Datasources gelten, wie auch sonstige Textfiles oder Collections.
Hier bin ich sehr für LINQ!

– Unify the way of accessing data from different data sources (Objects, database, XML…etc
– It shields you from learning the specification details of each data source

Hier schreibt Ahmed Nagy

Und weiter:

 

Wer mit LINQ to SQL arbeiten will, kann ein Compile konfigurieren.

Wobei ich mich mit diesem LINQ to SQL Compile frage, ob man da nicht mit einem DBA zusammen arbeiten muss, denn das ist nicht so einfach, siehe Anhang ganz unten mit dem Recompile!!!
Wenn man aber sowieso mit dem DBA arbeiten muss, dann kann man doch gleich Stored Procs bauen lassen.
Wie soll der arme Programmierer das alles auf der DB blicken sollen?

Wenn ich alleine gesehen habe, was die Kimberly L. Tripp an Webcasts gemacht hat… meine Güte.

Ganz interessant ist auch folgender Webcast von Bill Graziano, SQL Server MVP:
What I Wish Developers Knew About Writing Queries in SQL Server 2005
Wie soll da der Developer richtige DB-Abfragen machen, so aus dem Stegreif?
Entweder gibt es einen DBA zum Optimieren, oder der Programmierer ist der DBA, dann kann er gleich im SSMS graphisch die SQL-Queries zusammenbauen.
Am Besten ist es dann am Schluß mit dem Profiler nach Recompiles zu fahnden!!!

Hier, von Jim  Wooley, MVP, wie man LINQ to SQL Compiled Queries macht.

Das ist ja wieder extrem abstrakt!!!
OCaml und F#? Hallo ich wollte doch meine Arbeit vereinfachen!!!

Hier ein weiterer Ausschnitt

Anhang wegen der Recompilation von SPs

War Euch die Recompilation von SPs in dieser Art richtig klar??

Siehe: SQL Stored Procedure Recompilation 

A: ALL DDL first, ALL DML last
Die folgende SP wird bei jedem Ausführen genau dreimal recompiled!!

Also nicht nur beim ersten Ausführen drei Mal sondern JEDES MAL DREI MAL!!!
–DDL
–DML
–DDL
–DML etc…

B: Certain Temporary Table Operations

Und vor allen Dingen:

Hier die KEEP PLAN Option verwenden (sprich unkommentiere diese Option in der folgenden SP:

Also dann noch viel Spaß mit LINQ!
Denn LINQ ist m.E. ja gar nicht das Problem!
Alle meinen man nähme was Neues, das man nicht richtig versteht, um die ganzen alten Probleme wegzubekommen, die man auch nicht so richtig versteht.
Anstatt wieder einer neuen Sau durch das Dorf nachzurennen, wäre es vielleicht besser den alten Sachverhalt zu verstehen und dann mit dem Profiler zu arbeiten. Wie bei CSI: Es geht um Evidenz, nicht Kristallkugel.
Oder es gibt eine politische Vorgabe, dann ist es wieder etwas anderes.