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
