views:

182

answers:

7

Hi all,

I'm wondering what the best feature(s) of the orm framework you use and what features you find yourself using most?

What is the reason you chose the framework you use?

I'm just trying to compare them and wondered if any offers advantages over the other. (it's all very well googling this but you can't beat first hand user experiences!)

Specifically I'm looking for a .Net framework but still curious about ORM/features in other langauges.

Thanks in advance!

+2  A: 

We just recently went through the process of deciding between Entity Framework and NHibernate. Although my initial propensity was to lean towards NHibernate, given that Microsoft's track record of actually sticking with a technology has been less than stellar here in the past few years (ex: Linq To SQL, dead at version 1, or for a more recent example were MS decided to ditch ASP.NET Ajax Library client templates, check this), we still decided to go with Entity Framework.

We chose it for the following reasons:

  1. We are a Microsoft only shop, so it integrated well with our existing tool set.
  2. We liked the fact that it had the built-in modeling capability with it in Visual Studio 2010.
  3. We liked the capability of being able to reverse engineer a DB schema into an entity data model (this was really cool).
  4. We liked the fact that everything we needed was pretty much available out of the box, unlike with NHibernate where we would have to use different tools to do visual modeling, the mapping files can be a pain to deal with at times) and it didn't integrate as nicely with Visual Studio.

Whether or not going with Entity Framework was the right choice remains to be seen. There's always the chance that Microsoft could pull another "Linq To SQL" and say, "Hey, we're throwing away Entity Framework, sorry about that, you should have gone with NHibernate". But we decided that since it is on 2.0 now with VS 2010, there's at least a good chance that it's going to be around for a few years.

So even though we liked NHibernate's proven track record much better than Entity Framework's, we went with Entity Framework for the reasons I mentioned above.

I think you just have to look at the pros and cons of each tool, examine all the options, and try to make the best decision you can.

dcp
While this is always possible, I think it is very unlikely that Microsoft will pull the plug on EF (within a couple of years). They are investing heavily in EF.
Steven
@Steven - Time will tell :), but I agree and indeed hope we are both right.
dcp
NHibernate can be used in a DB schema reverse engineering scenario.
Michael Maddox
@Michael Maddox -We just liked the integration with Visual Studio that EF provides for this feature. Namely, we liked the .edmx file generation and the ability to see the schema visually, with almost no effort and no third party add-ons/tools,etc.
dcp
Be wary that EF is very buggy (4.0 is not nearly as bad as 3.5 was). Working by myself on a single project, I found [8 serious bugs](https://connect.microsoft.com/data/SearchResults.aspx?UserHandle=Daniel.Pflughoeft), the most serious of them being [this one](https://connect.microsoft.com/data/feedback/details/545491/linq-to-entities-incorrect-handling-of-null-variables-in-where-clause); problems relating to it get posted on stackoverflow *all* the time.
BlueRaja - Danny Pflughoeft
+2  A: 

I use empire-db by Apache.

The main reason is that I get rid of XML or annotations for defining database schemes. I really hate shifting complexity from coding to configuring having to cope with trillions of xml configuration files and - even worse - distributed configuration using annotations.

I believe Fluent NHibernate or code first Entity Framework 4, for example, would be the .NET equivalent.
Michael Maddox
+2  A: 

I'm wondering what the best feature(s) of the orm framework you use and what features you find yourself using most?

I wrote my own ORM. Features include:

  • Machine-generated code for each table, based on abstract table definitions

  • A library/framework, which acts on the table definitions and the run-time data, in order to implement ueful functions like:

    • Create tables (or update table definitions)
    • CRUD
    • Triggered stored procedures which create history records when a table's contents are changed
    • Support for tree-like data (using nested sets)
    • Transforming application types (C# class instances) to SQL data records and vice versa

What is the reason you chose the framework you use?

I didn't want to use an existing ORM, because I feared that I might sooner or later find that it did't implement some feature that I wanted, and that I'd then find it difficult to add that feature.

I wanted to use an ORM, because I didn't want to write and maintain code for each individual table.

ChrisW
http://staynalive.com/files/2010/03/wheel.jpeg
BlueRaja - Danny Pflughoeft
+2  A: 

I wrote Object Data Blocks to offer the following outstanding features

  • Uses .net classes to describe the db schema - no mapping files
  • Creates stored procs for all db access
  • Both classes and queries support inheritance
  • Automated deployment or sql script generation for DBA's

Its best summed up as an object persistence style ORM.

James Westgate
+2  A: 

I've wrote my ORM because it works with .NET Compact Framework on devices as well as with full .NET Framework without recompilation.

What is the reason you chose the framework you use?

  • It does not require from class to be inherited from specified base type or implement any kind of interface.

  • It supports nested transaction scopes that are not presented in .NET Compact Framework.

  • It allows me to create data access layer with domain model can be used both on device and on desktop or web application without cross-compilation or duplication.

STO
+1  A: 

I'm wondering what the best feature(s) of the orm framework you use and what features you find yourself using most?

I would say Linq support is the killer ORM feature for me. Right now, writing Linq queries against a database requires an ORM. Linq gives me compile time static type checking against the database in my queries, which now gives me compiler errors in some scenarios where the code and database are out of sync. I tend to work on databases that change a lot (agile) and work with teams of developers where database schema updates can come from any team member.

What is the reason you chose the framework you use?

There are plenty of other questions and answers on this topic:

http://stackoverflow.com/questions/1377236/nhibernate-entity-framework-active-records-or-linq2sql/

Michael Maddox
A: 

I use this: http://valueinjecter.codeplex.com/wikipage?title=Data%20access%20layer%20%28ORM%29%20with%20the%20Value%20Injecter&referringTitle=Home and the best feature is that you're up and running instantly

Omu