Alkampfer's Place

Il blog di Gian Maria Ricci
posts - 659, comments - 871, trackbacks - 80

My Links

News

Gian Maria Ricci Mvp Logo CCSVI in Multiple Sclerosis

English Blog

Tag Cloud

Article Categories

Archives

Post Categories

Image Galleries

I miei siti

Siti utili

L'importanza dei tipi su Nhibernate

In un progetto che sto facendo in cui uso per la prima volta nhibernate sono incappato in un comportamento a prima vista strano. La situazione è questa, ho una classe che ha un campo Enum, ed io la avevo mappata nel file di mapping con type="int", dato che un enum internamente è un intero questa apparentemente era una soluzione accettabile. 

<property name="FieldType" column="sefl_type" type="int" />

Il tutto funziona, ma andando a verificare il codice SQL prodotto da nhibernate per gli unit test delle mie funzioni di servizio ho notato degli UPDATE strani in chiamate a funzione che non modificavano nessun campo della classe. All'inizio non capivo perchè, a questo punto ho abilitato il Dynamic-Update per vedere i campi che venivano effettivamente modificati. Il risultato è che il campo considerato Dirty era proprio il FieldType. La soluzione è banale, bisogna sempre mettere sempre il tipo esatto nel mapping, dato che NHibernate accetta correttamente anche un tipo da noi definito nell'attributo type.

<property name="FieldType" column="sefl_type" type="Mynamespace.FieldTypes, Myproject" />

In questo caso bisogna ricordarsi di specificare anche l'assembly, ma in realtà funziona tutto bene anche se si omette completamente l'attributo type, perchè Nhibernate tramite reflection trova il tipo corretto. La conclusione è che è fondamentale non fuorviare NHibernate indicando tipi non perfettamente corrispondenti ai reali tipi della classe.

Alk.

Print | posted on mercoledì 21 febbraio 2007 12:05 |

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET