Pregunta

Cuando se utiliza Session.SaveOrUpdate(myEntity); ¿cómo decidir cómo NHibernate si desea insertar un nuevo registro o actualizar una ya existente?

Tengo problemas, mientras que el ahorro de un objeto en un proyecto S # arp. Se recupera de almacenamiento, a continuación, almacena en estado de sesión para un par de peticiones web, en aquel entonces guardado en la base de datos con una propiedad cambia (no el S # arp [DomainSignature]).

He, en tiempo de ejecución, en comparación el objeto que está a punto de ser persistido con una versión recién recuperada directamente de la base de datos utilizando el método Equals() y que devuelve true. Sin embargo, el objeto todavía termina creando una nueva fila en la base de datos.

En otras partes de la aplicación que esto está funcionando bien, pero estoy esperando un puntero sobre cómo está funcionando NHib esto.

¿Fue útil?

Solución

Básicamente SaveOrUpdate() está en busca de un identificador. Si el identificador está presente, se actualizará el registro en la base de datos. Si el identificador no está presente, se creará un nuevo registro.

Sin embargo, parece que es posible que tenga algo funky pasando en su sesión. Es posible que desee probar SaveOrUpdateCopy() para ver si así se resuelve el problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top