NHibernate

Abc ...defg

Qualche giorno fa un mio cliente mi ha chiesto la disponibilità per supportare una persona nel suo percorso di formazione relativo a .NET e poche settimane prima mi era arrivata un'altra richiesta simile. In realtà negli ultimi due anni ho ricevuto diverse volte questa richiesta ed in un modo o nell'altro, a seconda di entrambe le disponibilità, credo e spero di essere sempre riuscito a condividere quelle nozioni apprese in questi anni grazie soprattutto ad UGIdotNET e Microsoft. Perché lo scrivo qui? Come praticamente è avvenuto in tutte queste occasioni stavo riscrivendo più o meno la solita mail con qualche...

Comitato di salvaguardia del contesto di persistenza

Sarà quasi sicuramente un caso, ma in giro per il web vedo veramente pochi riferimenti al contesto di persistenza e sulle problematiche ad esso connesse. Non che la cosa non mi faccia dormire la notte, ma ci sono veramente tanti aspetti a riguardo che ho dovuto affrontare nell'ultimo anno (incredibile come vola il tempo!) e mi sorprende che se ne parli davvero così poco. Mi rendo conto di scrivere cose scontate, ma (citando nozioni apprese dal buon Janky): NO contesto di persistenza? NO lazy load delle entities (tramite OR/M)! ...

Persistenza "spontanea"? Autopersistenza?

Qualche giorno fa mi sono trovato di fronte ad una eccezione sollevata da NHibernate che mi ha fatto prima dannare e poi riflettere. Cercando di farla breve, mentre recuperavo da db un oggetto di tipo A veniva sollevata un eccezione riguardante un oggetto di tipo B che non aveva legami con nessuna delle altre entità del domain model. In effetti la causa non era riconducibile all'oggetto A, ma dipendeva dal fatto che avevo istanziato un oggetto di tipo B (quindi ancora transiente) e lo avevo associato ad un terzo oggetto, che a sua volta aveva aggiunto quell'oggetto B alla bag di un...

Insalata di codice

Il titolo del post farebbe pensare ad una versione estiva del menù del giorno e invece l'argomento non fa pensare a tavole imbandite.

In realtà, anzi, l'argomento è tutt'altro che leggero...(continua)

Appunti post-pizza

Come scrivevo venerdì sera, mi farebbe piacere trovare il tempo ed un modo per fare un test "concreto" sul mare di tecnologie nuove non ancora utilizzate in produzione.

Da un veloce censimento mentale è nato un elenco (continua)

NH.Steps ++

Durante una "chattata" con Marco di più di un mese fa, gli dissi che non concordavo con la metodologia da lui illustratami di creare una Session per ogni nuovo Form (Win o Web poco cambia) perchè non mi va assolutamente di "legare" in alcun modo la UI con i livelli sottostanti, ne l'idea di un BizLayer non "stateless". Tuttavia qualche settimana dopo, con molto più tempo e più calma a disposizione, al Mastering di Janky ho avuto la possibilità di comprendere quanto sia necessario gestire e mantenere il più possibile "vivo" il contesto di persistenza (la Session, nel caso di NHibernate), ma neanche la soluzione ipotizzata...

NHibernate.Mastering.Close();

Fare la pausa pranzo il primo giorno in un ristorante veramente carino: 15 euro Iscriversi al Mastering NHibernate circa una settimana prima dell'inizio beccando uno degli ultimi due posti liberi: 360 Euro + iva (con lo sconto UGIdotNET) Avere di fronte Janky che per due giorni parla quasi ininterrottamente di domain model ed orm, non ha prezzo! E ieri mi sono ritrovato involontariamente a ripensare inconsciamente a tutti i concetti sviscerati, a tutti i consigli ricevuti forse per paura di perdermi qualcosa in qualche angolo della zucca. E' bello essersi tolti molti dei timori nei confronti di NHibernate, in modo da poter decidere...

Primo giorno andato...

Domani seconda metà del Mastering NHibernate con Janky. Definire solo come "attiva" la partecipazione dei presenti oggi pomeriggio, nonostante l'abbuffata al buffet, quando si è entrati nel "vivo" sarebbe limitativo!!! Basti pensare che siamo usciti 2 ore dopo la fine prevista della giornata. Povero Janky, lo stiamo spremendo come un limone, pardon... come un arancio! Bello bello bello!

ISpecialCase

Non molto tempo fa, avevo inserito nei miei progetti una mia interfaccia IUnknowEntity che mi ha permesso di far gestire (o forse far digerire) gli special case "Unknow" (i "Missing" IMHO vanno gestiti dal DAL) a NHibernate. In poche parole tutti gli special case "Unknow" delle mie entità implementano l'interfaccia IUnknowEntity e sviluppando un PropertyAccessor custom per NHibernate si può dire semplicemente al custom Getter di inserire null nel db nel caso in cui l'entità che deve persistere implementa IUnknowEntity. BTW, di recente mi sono anche reso conto che come ISetter può essere tranquillamente utilizzato il BasicSetter se la relativa proprietà della classe utilizza una lazy initialization...