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
