Muchas gracias Nestor.


Roberto Ramírez
http://www.robertoramirez.com.mx


2010/9/26 Nestor Rodriguez <[email protected]>

> 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
>

-- 
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