2009-02-12 12 views
29

¿Alguien sabe si es posible saber si una propiedad específica de un objeto está sucia (es decir, la propiedad es diferente a la almacenada en la base de datos) usando NHibernate?¿Puedo decir si una propiedad está sucia usando nhibernate?

El trasfondo de esta pregunta es que tendré un objeto con un (relativamente) gran número de propiedades en él. Necesito poder pasar un parámetro (cadena) a una función que determinará si esa propiedad específica ha cambiado durante la vida de la página.

Si es necesario, puedo crear una copia del objeto y usar la reflexión al final del ciclo de vida de la página para verificar el valor, pero me resisto a hacerlo. Sería genial si NHibernate simplemente pudiera decirme si una propiedad estaba sucia.

Gracias

Respuesta

23
+3

El puesto evalúa de forma incorrecta para el estado sucio, a cambio: Int32 [] = dirtyProps oldState.Select ((O, i) => Object.equals (estado viejo [i], currentState [i])? -1: i) .Where (x => x> = 0) .ToArray(). De hecho, esta comprobación sucia está disponible desde el servidor a través de IEntityPersister.FindDirty. Ejemplo: http://stackoverflow.com/questions/1690755/in-nhibernate-my-check-if-entity-is-dirty-fails – Llyle

1

que no está actualmente disponible a través del NHibernate (o Hibnernate, que yo sepa) de la API. Puede escribir algo como esto almacenando el estado de los objetos cuando se cargan en la sesión y luego compararlos.

NOTA: No he visto esto por mí mismo, pero, si no ha bloqueado una opción de ORM, debería mirar Subsonic. Gran parte del estado sucio se rastrea dentro de los objetos mismos, y usted podría determinar si una propiedad en particular está sucia.

Cuestiones relacionadas