Problema NHIbernate in associazione uno-a-molti

giovedì 16 giugno 2011 - 18.37
Tag Elenco Tags  C#  |  .NET 3.5  |  Windows XP  |  Visual Studio 2008  |  MySQL 5.1

haxl Profilo | Newbie

Ciao a tutti, sono giorni che sbatto la testa su NHibernate che si comporta diversamente in due sezioni del mio gestionale C#.
Ho una classe "Missione" a cui sono associati uno-a-molti "DettaglioMissione" e su tali classi funzionano correttamente tutte le operazioni CRUD. Ho invece altre due classi, le cui mappature ed il cui codice di gestione sono praticamente identiche: una "Fattura" a cui sono collegati i "CostoQualificaFattura". Ed ecco il problema: se leggo la Fattura, NON apporto alcuna modifica ed immediatamente la salvo, NH non esegue query di UPDATE sui costi ma esegue operazioni di INSERT su di essi, duplicando sul db i record dei "CostoQualificaFattura" e SOLO DOPO esegue l'UPDATE della Fattura.
Vi riporto i file di mappatura, vi prego aiutatemi...
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

e poi

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Grazie, Alex

micto27 Profilo | Senior Member

Ciao,

è possibile che le 2 tabelle associate alle classi "CostoQualificaFattura" e "DettaglioMissione" abbiano ad esempio un default diverso
per la colonna "versione".
Se letta la fattura i suoi dettagli sul DB avessero NULL nella colonna "versione" ho il dubbio che possa venire attivata comunque una INSERT.
La mappatura delle relazioni in effetti sembra ok, così mi è venuto il dubbio che dipenda da qualcosa a livello database,
visto che con le altre 2 classi dici che funziona tutto a dovere.

Michele

haxl Profilo | Newbie

Grazie Michele,
dopo giorni a sbattere la testa contro le mappature proprio ieri mi è venuto il dubbio (facendo altre prove) che il problema fosse sui dati.
A volte ci si punta su un problema e non si riesce a guardare alla situazione globale. Il problema era proprio quello che suggerisci tu:
poichè sto facendo inserimenti a mano di dati di prova sul db, avevo messo il campo "version" a 0 nei record salvati: questo provocava le chiamate ad INSERT.
Ad ogni modo grazie tante, avevi compreso appieno il problema.
Alex
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5