Microsoft reinvents the wheel, again.

 

I am totally excited to see the wheel reinvented again. I’m so happy that
Microsoft has put their huge workforce of programmers to go and create
something which already exists.

The first blog post I read this morning is a link from Sam Gentile’s New
and Notable
on Entity
Client
. What an utter waste of time this is shaping up to me. I
get it. Microsoft wants LINQ to be awesome. Guess what? It
already is! So what is this Entity Client that has got me all worked
up? Well, in an nutshell, Microsoft REALLY likes NHibernate. But
NHibernate is OMG VIRAL LGPL Open
Source. This kind of open source gives Microsoft open sores. So
what is the north west Vatican(Redmond)
response when someone doesn’t agree with your religion? Call them a
heretic and if it is a really good idea incorporate it into your own religion.
Microsoft can’t use NHibernate. Why? … Here is a list of
reasons why:

  • Microsoft has a serious case
    of NIH syndrome
  • NHibernate sounds like
    Hibernate and that is Java and Microsoft isn’t allowed to do anything
    Java. Remember that law suit?
  • Hibernate Query Language
    doesn’t look enough like SQL Server’s SQL implementation
  • Adopting something great from
    the .NET community is a sign of
    weakness. Microsoft must pollute and confuse the solution space
    instead. See NUnit vs. MSTest, Nant vs. MSBuild, NDoc vs.
    Sandcastle.

Ok, so the above is a bit over the top, but I think I make
my point. The world would be a better place if Microsoft stopped
reinventing the wheel and just embraced existing libraries as the standards
they are. What really set me off was this bit of the blog post

EntityClient employs its own language, Entity SQL. An
Entity SQL query needs no change in order to work over different store
implementations of the same model. That is achieved through EntityClient’s
pluggable architecture.

 

This sound exactly like NHibernate to me.

While NHibernate doesn’t seem to have nearly the usage of NUnit, Nant or NDoc,
I have no doubt that the NHibernate community will continue to thrive, even
with the release of excellent tools from Microsoft for use with
EntityClient. NHibernate already has many excellent tools and it is here
today.

One huge difference between EntityClient and NHibernate is that EntityClient is
not a full ORM. It seems to be only the Dialect and Driver part of
NHibernate. From the same post

EntityClient does not attempt to materialize objects out of
the result set. Instead, it returns a plain DbDataReader for which those
applications may implement their own specialized object materialization, or
consume the DbDataReader directly.This does still sow confusion into the Data
Access space. My recommendation: Just ignore it. Go use
NHibernate (or CastleProject’s ActiveRecord).