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:
- 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).
- 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.
- 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.