I’m gonna come across as defending MS here, but really I just think this assesment of LINQ from Frans Bouma is just completely off base. LINQ has nothing to do with ORM at its core, instead it enables richer ORM scenarios with natural language query extensions for developers.
If you want to talk about DLINQ, well that’s another story, but then you’re talking about a layer built on top of LINQ and it is a completely separate beast and some of us have already had that discussion over on Paul Wilson’s blog. That said, I realize that most of the demos were done with DLINQ so it can kind of blur the lines and make it hard to see the distinction between the two, but what’s important are the core, abstract concepts:
- Query any IEnumerable<T>
- Can use natural query language syntax OR just use explicit delegates
- Ability to do projection and still work with a static type (really this is just a feature of the language, but it absolutely core to LINQ’s success)
- Complete query API extensibility using custom extension methods
- Expression trees enable product writers to proxy queries through to back end for efficiency (e.g. turn into SQL or XPath query for max efficiency over underlying store)
I don’t understand why ORM product writers aren’t absolutely elated over this technology. We finally get to do away with all our stupid, ugly query engines that we all do differently and force our customers to learn. Now we simply provide an expression evaluator for LINQ and developers can use the natural syntax of their favorite .NET languages (VB9 and C#3.0 on board so far) to query our entity layers. Isn’t this a dream come true? What am I missing?