SolutionDev Blog

Gedanken rund um die Lösungsentwicklung

Liste von APIs: http://www.apifinder.com

clock April 21, 2008 11:12 by author soldev

Eine sehr wertvolle Seite auf englisch... sie listet Unmengen von APIs auf, schön Kategorisiert. Selber findet man keine Informationen dort, aber jeweils die notwendigen Links.

Die APIs sind zum Teil kostenpflichtig, aber wer die jeweilige Ressource benötigt, wird sicher auch bereit sein, (ein wenig) Geld auszugeben.

 

Aktuelle Bewertung 5,0 von 1 Besuchern

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Techdays 08: Ronnie Saurenmann

clock März 23, 2008 14:30 by author soldev

Ronnie Saurenmann geht zügig in seinem gebrochenen Tessinerenglisch durch die Vorteile von Linq und zeigt dessen Einfachheit und Ausbaufähigkeit. Dazu gehören das schnelle Zusammenstellen neuer Klassen im Designer, welche anschliessend wie eine View funktionieren und das Paging von Daten.

Nach eine halben Stunde fängt er an die Dinge zu zeigen, welche gefährlich sind. Das gefährlichste ist die Möglichkeit Dinge zu programmieren ohne zu verstehen, was im Hintergrund passiert. Das dürfte dann vor allem die Entwicklerneulinge betreffen, welche nie SQL pgorammiert haben sondern lediglich über Linq arbeiten :)

Eines dieser Dinge ist Lazy (faul) vs. eager (fleissig) databinding. Wann wird ein Query ausgeführt? Bei der Definition oder beim Anzeigen der Daten? Lösung: Ein Query wird erst ausgeführt, wenn er verwendet wird.

var query = from c in db.Customers where c.Orders.Count() > 5
Select c;
dataGridView1.DataSource = query1;

Diese Query wird nicht etwa bei der Select Anweisung ausgeführt sondern erst bei der Verwendung als Datasource, wenn die dataGrivView gespeichert wird.

var query = from c in db.Customers where c.Orders.Count() > 5
Select c;
var query1 from c in query where c.city == "London"
select c;
dataGridView1.DataSource = query1;

Hier könnte man eigentlich davon ausgehen, dass der Query ausgeführt wird, wenn query1 einen Select auf query macht, denn es sind Daten von Daten. Tatsächlich aber wird für query1 lediglich die SQL Anweisung erweitert, der Datenzugriff erfolgt dann wiederum bei der Verwendung als Datasource. Es werden also keine zwei Statemens auf die DB losgelassen sondern nur einer. Ziemlich klever.

var query = from c in db.Customers where c.Orders.Count() > 5
Select c;
var list = query.ToList();
var query1 from c in list where c.city == "London"
select c;
dataGridView1.DataSource = query1;

Anders dieser Fall. Durch query.ToList() greifen wir direkt auf die DB zu und lesen die Datensätze in unser Memory. Hier bleiben die Daten unverändert bestehen und sind bereit für weitere Abfragen. Die Abfrage von query1 hingegen benötigt keinen weiteren Datenbankzugriff, da die Daten vorhanden sind...

Das Ganze ist also recht intelligent programmiert und wichtig zu verstehen, denn hier lassen sich Ressourcen sparen oder verschwenden. Auch kann man von mit falschen Annahmen einige Probleme generieren. Über die DataLoadOptions() kann dann nochmals einiges Steuern, z.B. vorgeben, welche Daten mitgeladen werden sollten.

Linq ist auf alle Fälle etwas zum vertiefen.

Aktuelle Bewertung 5,0 von 1 Besuchern

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Search

Calendar

<<  Dezember 2017  >>
SoMoDiMiDoFrSa
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

Archive

Tags

Categories


Blogroll

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2017

Sign in