whoami schreef op maandag 20 oktober 2008 @ 09:29:
Hmm, LINQ is meer dan LINQ to SQL (of wat de exacte naam ook is).
Als je via LINQ je DB wilt aansprekn, zijn er verschillende opties. De meeste O/R mappers ondersteunen het (LLBLGen zoals hier al gezegd; voor NHiberrnate is men ook bezig, ...).
Eigenlijk ondersteunen maar heel weinig o/r mappers Linq. De meesten roepen het wel, maar komen niet veel verder dan simpelere selects. Het kost nl. nogal wat werk om volledig Linq te supporten (kostte mij 8 maanden full time development). Als ik eerlijk mag zijn is onze linq provider de enige naast die van Microsoft die linq volledig implementeert.
Het hangt er vanaf wat de topicstarter precies wil. Linq is idd de naam voor het principe dat je kunt queryen in code: is de source een IEnumerable<T> dan krijg je linq to objects, is het een IQueryable<T> dan moet de source's provider de query afhandelen (want wordt dan gecompileerd in code die een Expression tree opbouwt). Dit betekent dus dat die provider dat ook moet kunnen, anders krijg je problemen at runtime. Het nadeel voor topicstarter is nu dat die provider specifiek is voor de O/R mapper die gebruikt wordt: dus gebruik je Linq to Sql, dan krijg je de provider van Linq to Sql, maar kun je niet een andere O/R mapper gebruiken. Gebruik je de onze, dan kun je niet Linq to Sql gebruiken etc.
Werken met data is meer dan data ophalen: je entity classes gebruik je verder in je applicatie, de services geboden door de o/r mapper ga je gebruik van maken, en niet te vergeten: data inserten, deleten en updaten, hoe wil je dat gaan doen. Het is dus belangrijk dat de topicstarter hier over nadenkt: is Linq to Sql precies hoe ik wil werken, dan is het wisselen van de linq provider dus ingrijpender dan alleen het kiezen van een andere o/r mapper: andere dingen wijzigen ook.