24 messaggi dal 16 giugno 2008
Ciao a tutti,

non so se il titolo è precisamente azzeccato ma non mi veniva in mente altro
Sto realizzando un progetto in cui (so che non è il massimo) un utente durante l'inserimento di un caso (ambito medico) deve bloccare qualsiasi modifica da parte di altri utenti.
Purtroppo l'operazione ha una durata imprecisata (visto che il medico deve scrivere referti o diagnosi).
Sto usando Nhibernate e non ho ben capito come gestire la cosa.
Devo usare un approccio pessimistico no?
Ma come faccio con Nhibernate? E come faccio a capire che i record collegati hanno il lock in modo da mostrare magari agli altri utenti questa situzione per non mostrargli un messaggio a posteriori del tipo "un altro utente sta lavorando al caso"?

Spero di non essere stato troppo poco chiaro

Saluti a tutti e grazie
Ciao,

sebbene NHibernate supporti il lock pessimistico (ma dipende in ogni caso dal database che c'è sotto), IMHO utilizzarlo equivale a farsi del male da soli.

Nel tuo caso mi sembra molto più consona una gestione della concorrenza tramite field di version (nativamente supportata da NHibernate) + transazione in fase di flush.

Per la gestione di conflitti puoi utilizzare come spunto quest'ottimo articolo di Ayende su MSDN Magazine
http://msdn.microsoft.com/en-us/magazine/ee819139.aspx

Se invece vuoi proprio il lock pessimistico, potresti prevedere una sorta di stato "IN LAVORAZIONE" delle entità, ma poi devi gestire problematiche tipo l'utente che ti chiude il browser o l'applicazione che crasha lasciando l'entity impegnata. Magari potresti a questo punto semplificarti un po' la vita con Workflow Foundation, associando a queste entity dei workflow che prevedano i due stati "Lavorazione" e "Disponibile" impostando nel primo un timer allo scadere del quale l'entità ritorna di nuovo Disponibile. Ma ripeto, non è banale.

Ciao,
m.
24 messaggi dal 16 giugno 2008
Ciao Cradle,

grazie per la risposta, chiara e puntuale come sempre.
Devo dire che la seconda soluzione non mi dispiacerebbe, visto che sarebbe anche un'occasione per imparare ad utilizzare il Workflow Foundation, ma il tempo è tiranno
Sicuramente leggerò l'articolo che mi hai indicato nella speranza di risolvere il problema.

Grazie ancora e ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.