2009-02-12 15 views
29

Qualcuno sa se è possibile stabilire se una proprietà specifica su un oggetto è sporca (ovvero la proprietà è diversa da quella memorizzata nel DB) utilizzando NHibernate?Posso sapere se una proprietà è sporca usando Nhibernate?

Lo sfondo di questa domanda è che avrò un oggetto con un (relativamente) grande numero di proprietà su di esso. Devo essere in grado di passare un parametro (stringa) a una funzione che determinerà se quella specifica proprietà è cambiata durante la vita della pagina.

Se è necessario, è possibile creare una copia dell'oggetto e utilizzare la riflessione alla fine del ciclo di vita della pagina per verificare il valore, ma sono riluttante a farlo. Sarebbe bello se NHibernate potesse semplicemente dirmi se una proprietà era sporca.

Grazie

risposta

23
+3

Il post valuta in modo non corretto per lo stato sporco, passare alla: Int32 [] = dirtyProps oldState.Select ((o, i) => Object.equalsQ (oldState [i], currentState [i])? -1: i) .Where (x => x> = 0) .ToArray(). In realtà questo controllo sporco è disponibile dal persister tramite IEntityPersister.FindDirty. Esempio: http://stackoverflow.com/questions/1690755/in-nhibernate-my-check-if-entity-is-dirty-fails – Llyle

1

che non è attualmente disponibile attraverso la NHibernate (o Hibnernate, AFAIK) API. Puoi scrivere qualcosa del genere da solo memorizzando lo stato degli oggetti quando vengono caricati nella sessione, quindi confrontarli.

NOTA: non l'ho visto da solo, ma, se non si è bloccato in una scelta ORM, si dovrebbe guardare Subsonic. Un sacco di stato sporco è tracciato all'interno degli oggetti stessi, e sarete in grado di determinare se una particolare proprietà è sporca.

Problemi correlati