Toch geen ei van Columbus?
Hoewel LINQ to SQL me gisteren wel het ei van Columbus leek ben ik daar vandaag niet meer zo zeker van.
Vanavond heb ik een beetje gezocht hoe je LINQ to SQL in een n-tier architectuur kunt gebruiken. Wanneer je dit in Google opzoekt zie je veel probleem verhalen en weinig successen.
Op de MSDN-site staat wel globaal beschreven hoe je het zou kunnen paar een echt real-life voorbeeld is niet echt aanwezig. Tenminste niet zoals ik het graag wil zien.
Via deze link https://msdn2.microsoft.com/en-us/library/bb882661.aspx krijg je wel weer genoeg leesvoer.
Vooral de hoofdstukken Implementing Business Logic (LINQ to SQL) ( https://msdn2.microsoft.com/en-us/library/bb882671.aspx ) en Data Retrieval and CUD Operations in N-Tier Applications (LINQ to SQL) ( https://msdn2.microsoft.com/en-us/library/bb546187.aspx ) vond ik enigzins interessant.
Het lijkt alsof je de objecten die je vanuit je dbml bestand (LINQ) krijgt worden ge-detached wanneer je ze in een andere laag gebruikt. Zodra je de wijzigingen wilt opslaan moet het gehele originele object weer terug worden gekoppeld, samen met een kopie van het originele object met daarin de wijzigingen. Of je maakt de wijzigingen in de LINQ-laag, maar dan kan het zijn dat je zo’n 40 parameters aan een functie moet toevoegen. Dat is natuurlijk ook niet echt overzichtelijk.
Mede door deze site ben ik een beetje ontmoedigd: https://cs.rthand.com/blogs/blog_with_righthand/archive/2007/10/06/LINQ-to-SQL-showstoppers.aspx
Hier staan een paar nadelen van LINQ to SQL opgesomd waar je gelijk tegen aan loopt.
Dit staat trouwens los van LINQ to Objects en LINQ to XML. Dat kan wel goed werken, alleen L2SQL lijkt iets minder handig te zijn qua implementatie.
Een post die ik nog tegenkwam van Kevin Hoffman is hier te vinden: https://dotnetaddict.dotnetdevelopersjournal.com/adoef_vs_linqsql.htm
Hier wordt even opgesomd waarom L2E beter gaat worden dan L2SQL. Hopelijk zijn de problemen die ik nu ondervind opgelost met L2E.
Voor nu zal ik proberen m’n DAL of EAL of hoe je de laag ook maar wilt noemen, te ontwikkelen met L2SQL.