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