Non ho neanche 1 minuto di cazzeggio ma al posto di guardare la televisione preferisco sempre andarmi a leggere qualcosa di utile.

Magari ho scoperto l’ acqua calda, ma sono caduto su questo wiki: http://wiki.fluentnhibernate.org.

Lo trovo davvero un progetto interessante per i seguenti motivi:

  1. Finalmente e’ stato abolito il fastidiosissimo uso di file XML che portano ad una notevole generazione di bugs in fase di compilazione (a meno che qualcuno riesca a fare i test anche sui file di configurazione di NHibernate).
  2. Possiamo finalmente lavorare a runtime sulla configurazione del DAL, visto che prima il file XML doveva essere incluso nell’ assembly e quindi potevamo giusto cambiare la configurazione della connessione.
  3. Un linguaggio in stile LINQ anche su NHibernate, e quindi qui mi salta fuori il dubbio e la domanda “Perche’ avere un progetto LinQ per NHB??”

Un piccolo esempio tratto proprio dal wiki:

PRIMA

   1: <?xml version="1.0" encoding="utf-8" ?>  
   2: <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"  
   3:   namespace="QuickStart" assembly="QuickStart">  
   4:   
   5:   <class name="Cat" table="Cat">  
   6:     <id name="Id">  
   7:       <generator class="identity" />  
   8:     </id>  
   9:   
  10:     <property name="Name">  
  11:       <column name="Name" length="16" not-null="true" />  
  12:     </property>  
  13:     <property name="Sex" />  
  14:     <many-to-one name="Mate" />  
  15:     <bag name="Kittens">  
  16:       <key column="mother_id"/>  
  17:         <one-to-many class="Cat"/>  
  18:       </bag>  
  19:   </class>  
  20: </hibernate-mapping>  

DOPO

   1: public class CatMap : ClassMap<Cat>   
   2: {   
   3:   public CatMap()   
   4:   {   
   5:     Id(x => x.Id);   
   6:     Map(x => x.Name)   
   7:       .WithLengthOf(16)   
   8:       .Not.Nullable();   
   9:     Map(x => x.Sex);   
  10:     References(x => x.Mate);   
  11:     HasMany(x => x.Kittens);   
  12:   }   
  13: }  

Mancano ancora tantissime cose, tipo il composite-id, gestione ben fatta dei join ed altro. I bugs possono essere segnalati qui:

http://code.google.com/p/fluent-nhibernate/issues/list

Mentre il prodotto e’ scaricabile qui, dove trovate anche un tutorial di base:

http://fluentnhibernate.org/downloads

PS: Anche Ayende ne e’ piacevolmente attratto.