no pongas cascade="delete" en el many-to-one, y para eliminar un child utiliza:
parent.RemoveChild(child); ya que vos configuraste cascade="all-delete-orphan" RemoveChild (debería removerlo de la collection y ponerle el .Parent = null <-- el del many to one). También podes hacer lo mismo al inversa, que al hacer "child.Parent = null" te haga dentro del set un parent.Childs.Remove(this),, pero.... El 4 de enero de 2011 10:07, Google Cris <[email protected] > escribió: > Buenos Dias: > > Por favor alguien que me ayude a este problema. > > Tengo un problema al eliminar los datos de una tabla hijo relacionada > con la tabla padre, si borro los elementos de la tabla hijo, me están > borrando también los elementos de la tabla padre. El esquema es el > siguiente: > > La Tabla Hijo: > > <?xml version="1.0" encoding="utf-8" ?> > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" > namespace="PDVSA.Negocio.Entidades.Comunes" > assembly="Entidades.Comunes" > default-lazy="true"> > <class name="PDVSA.Negocio.Entidades.Comunes.rEsquemaStandoff" > table="T_rEsquemaStandoff"> > <meta > attribute="extends">PDVSA.Business.Entities.Core.AbstractEntity</ > meta> > <meta attribute="addtional-soucecode"> > </meta> > <id name="ID" column="PK_CodigoEsquemaStandoff" type="String" > length="32" unsaved-value="0"> > <meta attribute="field-browsable">false</meta> > <meta attribute="field-readonly">true</meta> > <meta attribute="field-category">GeneralCategory</meta> > <meta attribute="field-propertysort">1</meta> > <generator class="uuid.hex"/> > </id> > > <many-to-one name="FK_CodigoEscenario" > class="PDVSA.Negocio.Entidades.Proyecto.pEscenario, > Entidades.Proyecto" foreign-key="FK_CodigoEscenario" > column="FK_CodigoEscenario" cascade="delete"> > </many-to-one> > > <property name="ProfundidadStandoff" column="ProfundidadStandoff" > type="double"> > </property> > > <property name="Standoff" column="Standoff" type="double"> > </property> > > </class> > > </hibernate-mapping> > > La Tabla Padre: > > <?xml version="1.0" encoding="utf-8" ?> > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" > namespace="PDVSA.Negocio.Entidades.Proyecto" > assembly="Entidades.Proyecto" > default-lazy="true"> > <class name="PDVSA.Negocio.Entidades.Proyecto.pEscenario, > Entidades.Proyecto" table="T_pEscenario"> > <meta > attribute="extends">PDVSA.Business.Entities.Core.AbstractEntity</meta> > <meta attribute="default-property-tostring">ID</meta> > <meta attribute="field-browsable">false</meta> > <meta attribute="field-readonly">true</meta> > <id name="ID" column="FK_CodigoEscenario" type="String" > length="32" unsaved-value="0"> > <generator class="foreign"> > <param name="property">FK_CodigoEscenario</param> > </generator> > </id> > > <one-to-one name="FK_CodigoEscenario" > class="PDVSA.Negocio.Entidades.Proyecto.dProyectoEscenario, > Entidades.Proyecto" foreign-key="PK_CodigoProyectoEscenario"> > </one-to-one> > > <set name="EsquemaStandoff" table="T_rEsquemaStandoff" > cascade="all-delete-orphan"> > <key column="FK_CodigoEscenario"/> > <one-to-many > class="PDVSA.Negocio.Entidades.Comunes.rEsquemaStandoff, > Entidades.Comunes"/> > </set> > > <property name="DescripcionEscenario" > column="DescripcionEscenario" type="String" length="1024"> > </property> > > </class> > > </hibernate-mapping> > > a. En este caso, (como muestro mis entidades arriba) si elimino el > hijo (EsquemaStandoff) me esta borrando también el padre (Escenario) y > no quiero que esto pase. > > b. Probe quitando el cascade="delete" del many-to-one de la tabla hijo > (EsquemaStandoff) y entonces al momento de eliminar el padre y existir > un hijo me esta dando el problema de que no puede eliminar el padre > porque existe un hijo. > > {NHibernate.Exceptions.GenericADOException: could not delete: > > [PDVSA.Negocio.Entidades.Proyecto.pEscenario#33dc6e7f191f462a882c889071ac64eb] > [SQL: DELETE FROM public.T_pEscenario WHERE FK_CodigoEscenario = ?] > Npgsql.NpgsqlException: update or delete on table "t_pescenario" > violates foreign key constraint "fk_codigoescenario" on table > "t_resquemastandoff" > > Ya he probado de todas las formas y no se como borrar de la forma en > que deseo: > Desearía que al borrar el Escenario me borre todos sus EsquemaStandoff > asociados y que si borro un EsquemaStandoff no me borre el Escenario. > > Si alguien me puede ayudar con este problema se lo agradezco, que me > indique si estoy haciendo las cosas mal. > > O será que a juro yo tengo que hacer la implementación para que > hibernate borre los hijos antes que los padres? > > -- > Para escribir al Grupo, hágalo a esta dirección: > [email protected] > Para más, visite: http://groups.google.com/group/NHibernate-Hispano -- Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano
