| De seneste uger har jeg arbejdet med at omlægge et website fra ADO.net til LINQ. Det har været interessant. Ved første blik virker LINQ jo så ufatteligt besnærende. Løkker og filtreringer, sql-strenge og alt muligt andet væsen erstattes med lambda-funktioner og stærkt typede queries direkte i programmeringssproget. Man loader data ind, retter i dem og gemmer ændringerne uden videre fiksfakserier.
Men så falder den anden sko.
Deferred loading bliver hurtigt din fjende. Hvis du ikke passer på, bliver deferred loading til repeated loading, og du får helvede med at opdatere større transaktioner, fordi dine data ikke lever i den samme datacontext. Og prøv at Attache fra én datacontext til en anden. Nettet er fyldt med tricks om kloning, serialisering og meget andet. Det er bare ikke let.
Men man retter sig ind. Lærer at sætte DataLoadOptions på sine specialiserede datacontexts. Lærer at være ultra omhyggelig med hvem der loader hvilke objekter. Lærer at læse LINQs SQL-log, og bliver klogere på hvad der egentlig sker. Og langsomt begynder det at tage form. Ikke perfekt. Men grundideen er så fornem, at man accepterer særhederne og stramheden i typesystemet. Man opdager, at LINQ tvinger en til at tænke i typer, snarere end i løkker og algoritmer. Abstraktionsniveauet er simpelthen højere, og jeg er overbevist om at den producerede kode er af en højere kvalitet.
|
27/08-2010 10:35 af nanna møller
17/05-2010 15:23 af Jakke
17/08-2009 07:45 af Knobbe
12/08-2009 16:45 af Clæus
11/08-2009 02:49 af Bo
08/07-2009 00:27 af sinætra
14/05-2009 03:22 af Clæaus
02/04-2009 03:28 af lækremichael
26/03-2009 09:44 af Jakke
20/03-2009 02:32 af Jakke