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:

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" lazy="false">
</one-to-one>

<property name="DescripcionEscenario" column="DescripcionEscenario"
type="String" length="1024">
</property>

</class>
  </hibernate-mapping>

Tabla que posee la relación del 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">
      <generator class="uuid.hex"/>
    </id>

    <many-to-one name="FK_CodigoEscenario"
column="FK_CodigoEscenario"
class="PDVSA.Negocio.Entidades.Proyecto.pEscenario,
Entidades.Proyecto" foreign-key="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>


El borrado lo hago así:

listaREsquemaStandoff =
boundListCollection.Get<rEsquemaStandoff>().CreateCriteriaController()
.AddCriteria(coleccion.Expression.Equal<rEsquemaStandoff,
String>("FK_CodigoEscenario.ID", clsPEscenario.ID))
.BoundList();

while (listaREsquemaStandoff.Count != 0)
{
listaREsquemaStandoff.Remove(listaREsquemaStandoff[0]);
}
sessionContext.Delete<rEsquemaStandoff>(listaREsquemaStandoff.RemovedItems);
sessionContext.Close();


No se confundan con tanto código, la lista
listaREsquemaStandoff.RemovedItems tiene la lista de los elementos que
quiero elimina.

El problema entonces es que cuando elimino el REsquemaStandoff (Hijo)
también me esta borrando el PEscenario (Padre) y no quiero que esto
pase, de manera tal que solo quiero que se borre el ResquemaStandoff.

Para mi el problema esta en la declaración de las entidades, pero no
veo como solucionarlo:

Intente quitar el cascade=”delete” del many-to-one ubicado en la
entidad REsquemaStandoff, pero en ese caso al momento de eliminar el
PEscenario, me dice que no puede ser borrado el PEscenario porque
existe un elemento en REsquemaStandoff que tiene su relación.

<many-to-one name="FK_CodigoEscenario" column="FK_CodigoEscenario"
class="PDVSA.Negocio.Entidades.Proyecto.pEscenario,
Entidades.Proyecto" foreign-key="FK_CodigoEscenario"
cascade="delete">
</many-to-one>

Ya no se que puedo hacer??? Si alguien me da unas luces o ve el error
se lo agradezco mucho.

-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

Responder a