views:

506

answers:

3

I'm looking for a list of all the features you would have implement in a custom object relational mapper (ORM) to meet all the features of NHibernate.

to start:

  1. database portability through different drivers and dialects
  2. caching
  3. lazy loading
  4. custom SQL
  5. query interface - LINQ, Criteria, QBE (Query By Example)
  6. basic and advanced mapping functionality (ex. discriminator columns, examples)
  7. support for transactions and unit of work
  8. Multi-Criteria
  9. Multi-Query
  10. Batching
  11. Hooks to supplement/override functionality

<Insert yours Here>

See another list here: 25 Reasons Not To Write Your Own Object Relational Mapper from Ayende Rahien

+1  A: 

Some kind of query interface (like linq or Criteria)

Some kind of mapping functionallity

Support for transactions and Unit of work

Jon
+1  A: 

Multi query,

Batching.

And most importantly: Hooks to supplement/override whatevery functionality that works in ways you did not expect/want/feel like that day.

The last part is one place where NHibernate excels.

mookid8000
+1 thanks and agree strongly with your last statement
tyndall
+2  A: 

Ayende published a near complete list of important ORM features here: http://ayende.com/Blog/archive/2006/05/12/25ReasonsNotToWriteYourOwnObjectRelationalMapper.aspx

An important one that is missing from your list is IsDirty/State Change checking. Identity Map is another important one which enables a lot of the other features such as IsDirty.

Daniel Auger
So would you say that Identity Map is the feature and IsDirty an aspect of that feature? or would you list it as 2 separate items?
tyndall
Hard to say. Identity Map is a feature itself but it is often used as the heart of other features such as dirty tracking, caching, and unit of work. Those features can be implemented w/o identity map and Identity map can be implemented without those features. However, they tend to go hand-in-hand.
Daniel Auger