dale una leida
http://fabiomaulo.blogspot.com/2009/04/empezando-con-nhibernate.html

2010/9/26 J. Roberto Ramírez <jramirezle...@gmail.com>

> Muchas gracias Diego, efectivamente la solución fue modificar la FK.
>
>
>
>
> Roberto Ramírez
> http://www.robertoramirez.com.mx
>
>
> 2010/9/25 Diego Mijelshon <di...@mijelshon.com.ar>
>
> 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 <jramirezle...@gmail.com>
>>
>>> 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:
>>> NHibernate-Hispano@googlegroups.com
>>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>>>
>>
>>  --
>> Para escribir al Grupo, hágalo a esta dirección:
>> NHibernate-Hispano@googlegroups.com
>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>>
>
>  --
> Para escribir al Grupo, hágalo a esta dirección:
> NHibernate-Hispano@googlegroups.com
> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>



-- 
Fabio Maulo

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

Responder a