LINQ introductie
Aangezien ik bezig ben m’n weblog opnieuw te ontwikkelen, maar dan in .Net, heb ik maar gelijk gekozen voor het nieuwste framework, namelijk 3.5.
Momenteel ondersteund de provider dit nog niet, maar aaangezien ze ook behoorlijk snel waren met .Net 3.0 te installeren zal 3.5 binnenkort ook wel werken.
Als eerste wil ik de DataAccess-laag maken. Eerst was ik van plan dit precies doen zoals op het werk, maar dan met geautomatiseerde tools.
Nu bedacht ik me dat je in .Net 3.5 uiteraard ook gebruik kunt maken van LINQ. Dit is nieuw, dus ook vet om te gebruiken.
Of het echt goed is zullen we in de loop der jaren wel achter komen, maar ik wil het toch wel eens even gebruiken voordat er een subjectief oordeel over kan worden geveld. Iedereen vind de features natuurlijk wel enorm leuk, maar is het ook werkbaar?
Om dit uit te vinden heb ik zojuist heel wat teksten gelezen op bekende en onbekende weblogs en MSDN-subsites.
De website https://www.hookedonlinq.com/ heeft een duidelijk verhaal. Hier werd me in een keer duidelijk wat de verschillende LINQ versies doen. Hiermee bedoel ik dus LINQ to SQL, LINQ to XML en LINQ to Objects.
Momenteel wil ik alleen LINQ to SQL gebruiken, dus daar heb ik de meeste leestijd aan besteedt.
Wat mij opviel is dat er met LINQ allemaal dynamische statments worden gegenereerd. Dit is juist iets waar veel ontwikkelaars vanaf zijn gestapt vanwege de SQL Injection. Volgens de voorstanders van LINQ heeft LINQ to SQL hier geen last van, aangezien de dynamische queries toch worden omgezet in zogenaamde parameterized queries. Op zich leuk, maar ik wilde toch wel zeker weten of ik uberhaupt nog wel stored procedures kan gebruiken.
Hier heeft Scott Guthrie een mooie post over gemaakt: https://weblogs.asp.net/scottgu/archive/2006/06/18/DLINQ-with-Stored-Procedures.aspx
Ziet er behoorlijk eenvoudig en handig uit moet ik zeggen.
Nu had ik al veel code gelezen, maar nog niet gevonden hoe ik LINQ to SQL echt kan gaan toevoegen aan m’n project.
Dit heb ik dan weer op de MSDN website gevonden. De begin-pagina was deze https://msdn2.microsoft.com/nl-nl/library/bb384470(en-us).aspx (How to: Add LINQ to SQL Classes to a Project (O/R Designer))
Door de links op deze pagina te volgen wordt redelijk snel duidelijk hoe je het moet doen.
Het komt er op neer dat je een nieuw item moet toevoegen aan je project (Add new item… –> LINQ to SQL Classes).
Er wordt een mooi *.dbml
bestand toegevoegd aan je project. Zelf heb ik deze de naam WeblogDataclasses.dbml
gegeven, maar ieder andere naam zal ook wel volstaan.
Nu begint het sleur-en-pleur werk. Via de Server Explorer
kun je alle tabellen die je wilt gebruiken in je project toevoegen aan de lege pagina van het dbml-bestand.
Wat ik ook wel leuk vind om te lezen is dat je ook gelijk validatie kunt toepassen met LINQ. De onderste link met de titel Walkthrough: Adding Validation to Entity Classes vertelt stap voor stap wat je moet doen om validatie toe te passen op je objecten.
Ook leuk is de Data Sources Window. Hiermee kun je snel een gebruikersinterface maken. Hoe en of je dit los kunt koppelen van de DataAccess-laag weet ik nog niet. Het lijkt me aannemelijk dat alle Entity objecten ook bereikbaar zijn in de Business- en Presentatie-laag, maar daar zie ik momenteel nog weinig van terug.
Alles staat volgens namelijk in het dbml-bestand, welke zich in de DataAccess bevind.
Natuurlijk ben ik ook nog maar een uurtje echt bezig, dus het is niet onwaarschijnlijk dat ik nog niets mis of over het hoofd heb gezien.
Nu ga ik eerst weer verder met het (af)maken van de laag.