views:

124

answers:

1

I'm gonna start a new project soon, using .Net 3.5 and Winform on an Oracle database. We were planning on using an ORM. NHibernate was suggested by our architect. Since I'm personally more familiar with Entity Framework, I thought it would be easier to use than NHibernate. But since there isn't any official provision from Oracle, we are resistant to using it.

So my question: I have looked at the different providers available and found some:

  • DevArt
  • DataDirct
  • EFOracleProvider

So I'd like to have some feed back on each of them - pros and con, missing feature, stuff like that, from those using them, and know if we're better off with NHibernate?

Thanks for the help.

+6  A: 

Your architect is right - NHibernate is simply a fantastic ORM.

NHibernate doesn't come with the whiz-bang visual designers that EF comes with, and keeping all that XML in sync with both the schema/migrations and the class definitions a chore. Luckily, there is an auto-mapper called FluentNHibernate that can make even that aspect of NHibernate seamless (you can customize the mapping on a per-table or per-column basis if you like, and also override the auto-mapper conventions).

The data-access components Microsoft puts out tend to be lower-level, and tend to rely on visual designers. That's not how I want to work. Personally, I want a high-level library that works behind the scenes, and doesn't require fancy machinery to set up and maintain.

Don't get me wrong - some of the things Microsoft puts out are fantastic, such as the .NET platform as a whole. I just think Microsoft doesn't target me and my needs with its data-access strategies nearly as well as NHibernate does.

Justice
+1. Just finished a project with .NET 3.5 and Fluent NHibernate and it wasn't that bad. There were a few kinks, but they were easy to figure out.
Jim Schubert
There are visual designers for NHibernate. NHibernate is usable without XML. Facts matter.
Michael Maddox
Thx for the feedback, i didn't know FluentNHibernate, I'll surely look into it.
moi_meme