För det första bör det sägas att Linq (Language Integrated Query) inte konkurrerar med or-mappers. Linq är bara (inte så bara) en språkutökning som tillåter queries på objekt, men det har ingen arkitektur för persistence. Linq motsvarar alltså snarare NHibernates HQL eller Wilsons (m.fl) OPath, men gör det på ett sätt som är helt integrerat i programmeringsspråket. Det finns dock ett sidoprojekt som heter Dlinq (numera "LINQ to SQL") som kopplar ihop Linq:ade klasser med en databas, och dessutom ett ytterligare projekt som heter LINQ to Entities + ADO.NET Entity Framework som är en mer komplett OR-mapper (och mer därtill).
Är Linq bra?
Jag tycker det. Linq är överlag mycket snyggt och Microsoft (som har lyxen att kunna erbjuda något sådant, eftersom de sitter på kompilatorarkitekturen) har lyckats skapa en query-arkitektur som är mycket användbar. Man kan skapa egna modeller och system som kan bli "frågbara" genom Linq. Det behöver inte vara en databas, utan det kan lika gärna vara mot t.ex. en webservice eller ..... NHibernate (Ayende jobbar redan på Linq for NHibernate)
Är Linq to SQL bra?
Mnja. Det är antagligen tillräckligt bra för att fler ska fatta att OR/M-arkitekturer är rätt väg att gå (därmed inte sagt att det alltid är det, men ofta....ofta som fan), men det är verkligen inte bättre än t.ex. NHibernate eller Wilson ORMapper. Den tekniska implementeringen lämnar mycket att önska. Det faktum att det är Microsoft som släpper teknologin betyder dock antagligen mer för att många ska börja använda det, och förhoppningsvis så blir det i alla fall ett steg ifrån TableAdapters och annan pajasteknologi. Tyvärr är det endast för SQL Server.
Linq to SQL kan inte ersätta NHibernate et al. på långa vägar, men det är en bit på vägen.
LINQ to Entities + ADO.NET Entity Framework
Detta ramverk är en annan femma. Det är märkligt och aningen irriterande att två olika arbetsgrupper inom Microsoft jobbar mot liknande mål och först långt in i projekten inser att det kan ha nytta av varandra. EF (Entity Framework) är ett komplett OR/M-ramverk med en rätt massiv abstraheringsarkitektur. Stödet för Linq kom till i efterhand, men det bör fungera bra.
Kommer NHibernate att ha något existensberättigande?
Ja verkligen. NHibernate är än så länge en mycket mognare teknologi, med åratal av användarfeedback (från både .NET och Java-världen) bakom sig. Dessutom finns det alla möjligheter att nyttja NHibernate i ett Linq-scenario. Det faktum att NHibernate är en bättre teknologi behöver dock inte innebära så mycket, eftersom många utvecklare och organisationer bara bryr sig om saker som det står Microsoft på. Microsoft marknadsför dessutom hela konceptet som om det vore något helt nytt, och nämner inte att det finns existerande lösningar.
Sammanfattningsvis...
Linq, frågespråket, är fina grejer. Mycket användbart! Linq to SQL och EF ger däremot inte så mycket nytt och för mig som redan investerat tid i att bli bra på existerande OR/M-ramverk så finns det inte något som lockar, förutom den integration med Visual Studio som kommer att erbjudas.