Posts
89
Comments
139
Trackbacks
6
[NHibernate] - DateTime e update non necessari

Seguendo il post di Gian Maria oggi mi sono deciso ad attivare il log su NHibernate per verificare quali query fossero lanciate sul database (a proposito quando attivate il log ricordatevi di inserire l'inizializzazione di log4net altrimenti non viene loggato niente).

Tutto funziona a meraviglia, ma con mio stupore ho notato che nel dump sono presenti una serie di update a fronte di una semplice lettura di dati (da un solo tipo di entità). Controllo il mio file di mapping ma è tutto molto semplice: qualche proprietà e 4-5 relazioni many-to-one. Vado in debug e in effetti verifico che la sessione è dirty.

Non sapendo che altro verificare, ho iniziato a togliere dal file di mapping proprietà su proprietà fino a scoprire quelle colpevoli: si tratta di due campi DateTime che nel database sono però nullabili. La spiegazione dettagliata del perchè l'entità venga considerata dirty la trovate in questo post di Ayende.

Come consigliato ho risolto il problema modificando le due proprietà affinchè fossero nullable: 

Public Overridable Property Data() As Nullable(Of DateTime) Get Return m_Data End Get Set(ByVal value As Nullable(Of DateTime)) m_Data = value End Set End Property
Technorati Tags: ,


posted on mercoledì 27 febbraio 2008 14.27 Print
Comments
Gravatar
# re: [NHibernate] - DateTime e update non necessari
raffaeu
27/02/2008 15.28
Si in C# viene dichiarata come

public Nullable<DateTime> DataConsegna
{get;set;}
Ma ocho al DateTime.MinDate, su MS SQL non viene accettato. :-P
Gravatar
# re: [NHibernate] - DateTime e update non necessari
Gianluca Gravina
27/02/2008 15.49
Mi ci sono scontrato anche io ... più di una volta. Per le sue caratteristiche, tutti i campi DateTime vanno mappati come nullable, come alternativa alla sintassi sopra proposta, in c# (non so in vb) si può anche usare una notazione un po' più easy:

public DateTime? DataConsegna {...}

E confermo, occhio al 1753 (se non ricordo male) !!!

Post Comment

Title *
Name *
Email
Url
Comment *  
Please add 2 and 6 and type the answer here:
News
Se volete sapere con chi avete a che fare eccomi qui in uno "scatto" lavorativo.
La mia foto
Da grande fan di Homer & company non potevo esimermi nel simpsonizzarmi. Eccomi insieme alla mia dolce metà:
Simpsonizzato

Logo MCAD
Logo MCTS

Visite dal 16/03/2007:

Il mio stato su Messanger: