I princip alla projekt jag varit inblandad i de senaste åren har använt sig av ett objektorienterat programmeringsspråk som hämtat och lagrat data i en relationsdatabas. Ett återkommande arkitekturproblem vid denna kombination är att den objektorienterade programmeringsmodellen inte är särskilt väl lämpad att hantera relationsdata. Detta problem brukar kallas Object-Relational impedance mismatch och det har utvecklats en uppsjö angreppssätt för att komma runt detta problem genom åren. De mest kända och mest använda är Call-Level Interfaces som ADO.NET, ODBC och JDBC. Kodgeneratorer som CodeSmith och Visual Studios egen är en annan populär metod. Något som blivit mycket populärt på senare tid - först i Java-världen, men nu också bland .NET-utvecklare - är object/relational mapping (även O/R-mapping, automated mapping) med verktyg som NHibernate (.NET-varianten av Hibernate) och Ruby.
I "Orcas", nästa version av Visual Studio, lanserar Microsoft sin nya lösning på problemet med Object-Relational impedance mismatch: projektet LINQ. LINQ står för Language INtegrated Query och är en utbyggnad av C# och Visual Basic som gör det möjligt att använda SQL-liknande "query expressions" precis som vanlig kod och få tillgång till compile-time syntax checking, IntelliSense-hjälp och så vidare. Med LINQ kommer man dels att kunna ställa queries mot såväl relationsdata som XML, men också mot objekt av klasser som implementerar IEnumerable/IEnumerator, t.ex. alla Collections. Även om LINQ kanske inte är svaret på alla objekt/reation-problem så är det definitivt värt att kolla in.
Artikel på MSDN som jämför LINQ med NHibernate, CodeSmith m.fl. utifrån problemet med Object-Relational impedance mismatch:
http://msdn.microsoft.com/netframework/default.aspx?pull=/library/en-us/dndotnet/html/linqcomparisons.asp
Introduktion till LINQ:
http://msdn.microsoft.com/netframework/default.aspx?pull=/library/en-us/dndotnet/html/linqprojectovw.asp