Que bien que te haya funcionado.  Lo de generar el esquema con NH es bien
util porque te evita problemas como el de olvidar colocar en un constraint *on
delete cascade.  *Es vital que siempre verifiques cuales son las
implicaciones de cualquier configuracion.  Una muy buena opcion, tal como lo
recomienda Fabio en su blog, es utilizar el  SchemeValidator si no vas a
generar la BD desde NH.

Saludos,
Nestor Rodriguez

2010/9/26 Fabio Maulo <[email protected]>

> dale una leida
> http://fabiomaulo.blogspot.com/2009/04/empezando-con-nhibernate.html
>
> 2010/9/26 J. Roberto Ramírez <[email protected]>
>
> Muchas gracias Diego, efectivamente la solución fue modificar la FK.
>>
>>
>>
>>
>> Roberto Ramírez
>> http://www.robertoramirez.com.mx
>>
>>
>> 2010/9/25 Diego Mijelshon <[email protected]>
>>
>> Es muy sencillo. En esta línea:
>>>       <key column="idDetalle" on-delete="cascade"></key>
>>> ...le estás diciendo a NH que la base se encarga de hacer el cascade (lo
>>> cual es correcto y eficiente).
>>> Sin embargo, y al no haber generado el esquema con NH, esa relación NO
>>> está definida como ON DELETE CASCADE en la base y por eso te da ese error.
>>> Solución: modificar la FK para que sea ON DELETE CASCADE.
>>>
>>>     Diego
>>>
>>>
>>> 2010/9/25 J. Roberto Ramírez <[email protected]>
>>>
>>>> Buenos días al foro,
>>>>
>>>> Tengo un problema que casi estoy seguro es de modelado, me gustaria que
>>>> me ayudaran a decirme como resolverlo con nhibernate.
>>>>
>>>> Es simple, cuento con una entidad Factura la cual tiene su detalle de
>>>> movimientos en stock al que llamaré Detalle y el cual mapeo de la siguiente
>>>> manera:
>>>>
>>>> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Core"
>>>> namespace="Core">
>>>>   <class name="Factura" table="tblFacturas" lazy="false">
>>>>     <property name="Folio" column="folio"></property>
>>>>     <bag name="Detalle" inverse="true" cascade="all-delete-orphan"
>>>> lazy="false" order-by="partida">
>>>>       <key column="idFactura" on-delete="cascade"></key>
>>>>       <one-to-many class="Detalle"></one-to-many>
>>>>     </bag>
>>>>   </class>
>>>> </hibernate-mapping>
>>>>
>>>> El asunto es que el usuario del sistema puede asignarle comisiones a
>>>> vendedores por Detalle de Factura y para soportar eso tengo la siguiente
>>>> asociación y mapping:
>>>>
>>>> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Core"
>>>> namespace="Core">
>>>>   <class name="Detalle" table="tblDetalles" lazy="false">
>>>>     <bag name="Comisiones" inverse="true" cascade="all-delete-orphan"
>>>> lazy="true" order-by="consecutivo">
>>>>       <key column="idDetalle" on-delete="cascade"></key>
>>>>       <one-to-many class="Comision"></one-to-many>
>>>>     </bag>
>>>>   </class>
>>>> </hibernate-mapping>
>>>>
>>>> El problema del que les habia hablado se presenta al momento de eliminar
>>>> un Detalle de la Factura:
>>>>
>>>> foreach (Detalle ddToDelete in listToDelete) {
>>>>   factura.Detalle.Remove(ddToDelete);
>>>> }
>>>>
>>>> session.Update(factura);
>>>>
>>>> El cual me lanza la siguiente excepción:
>>>>
>>>> {"Instrucción DELETE en conflicto con la restricción REFERENCE
>>>> \"FK_tblComisiones_tblDetalles\". El conflicto ha aparecido en la base de
>>>> datos \"xxx\", tabla \"dbo.tblComisiones\", column 'idDetalle'.\r\nSe
>>>> terminó la instrucción."}
>>>>
>>>> Error por una relación en la base de datos... ¿como podria darle soporte
>>>> a este problema?
>>>>
>>>> Muchas gracias por leer y ayudar.
>>>>
>>>>
>>>>
>>>> --
>>>> Roberto Ramírez
>>>> www.robertoramírez.com.mx <http://www.xn--robertoramrez-5ib.com.mx>
>>>>
>>>> --
>>>> 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
>>>
>>
>>  --
>> Para escribir al Grupo, hágalo a esta dirección:
>> [email protected]
>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>>
>
>
>
> --
> Fabio Maulo
>
>  --
> 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

Responder a