La tabla Email (hija) tiene una FK a la tabla DatosPersonales, pero no
puede ser null, pues forma parte de la clave primaria de la propia
tabla Email. Es decir, mi tabla Email es así:
---------------------------------------
| Email |
--------------------------------------
| PK(email, idpersonales) |
| FK(idpersonales) |
---------------------------------------
idpersonales es clave primaria de la tabla DatosPersonales. Por tanto,
no puede ser NULL. Esto quiere decir que tengo que hacer el delete
individual del Email ya que la actualización de DatosPersonales
necesita que las foreign keys puedan ser NULL para borrar los objetos
perdidos?
On 31 ene, 20:10, "Dario Quintana" <[EMAIL PROTECTED]>
wrote:
> Si, ningun problema:
>
> public int Guardar(ActividadPlan entity)
> {
> if (IsValid(entity, Validate.Entity))
> {
> try
> {
> _ActividadPlanData.BeginTransaction();
> _ActividadPlanData.SaveOrUpdateObject(entity);
> _ActividadPlanData.CommitTransaction();
> }
> catch (Exception ex)
> {
> _ActividadPlanData.RollBackTransaction();
> throw ex;
> }
> }
> return entity.IdActividadPlan;
> }
>
> Tambien adjunto la capa de abajo: ActividadPlanData, y referencia de
> más abajo: BaseRepository, para que veas todo el camino. Y no hay nada
> de distinto en lo que vos queres hacer.
> Te fijaste si la columna de la tabla hija (en la FK) acepta null ?
> Controlá nuevamente los mapping, como yo lo hice, funcionó.
>
> On 1/31/07, Chili <[EMAIL PROTECTED]> wrote:
>
>
>
>
>
> > He estado mirando tu código, y básicamente es a lo que yo me refería.
> > Borras un elemento de tu colección, y a continuación salvas tu clase
> > padre (la actualizas) y el nhibernate se ocupa de todo. He visto algo
> > en un mapping que no sé para qué sirve, a ver si me lo podrías
> > explicar: unsaved-value="0".
>
> > Como no sé lo que estoy haciendo mal, ¿podrías pegar aquí tu método
> > Guardar de ActividadPlanBL?
>
> > Saludos!
>
> > On 31 ene, 01:29, "Dario Quintana" <[EMAIL PROTECTED]>
> > wrote:
> > > Adjunto un pedazo de codigo, explico algo del codigo:
>
> > > Son 2 entidades:
>
> > > -ActividadPlan (padre)
> > > -LaborActividadPlan (hija)
>
> > > tambien mando un ejemplo de form con la funcionalidad, para que vean
> > > algo del código:
>
> > > - frmLaboresPorActividad.cs
>
> > > Bien lo que hago es asignar a "bsource" (que es un bindingsource) la
> > > lista de las LaborActividadPlan. Cuando quiero eliminar un hijo, me
> > > "paro" sobre el hijo y hago:
> > > bsource.RemoveCurrent();
>
> > > y despues le doy Guardar:
>
> > > this.ActividadPlanBL.Guardar(this.ActividadPlan);
>
> > > Solamente guardo el padre, el hijo se borra solo, NHibernate se dá
> > > cuenta solito y lo elimina.
>
> > > Tambien adjunto los mapping para que vean.
>
> > > Ahora despues la seguimos...ahora tengo que salir..nos vemos gente
>
> > > On 1/30/07, Ezequiel Jadib <[EMAIL PROTECTED]> wrote:
>
> > > > si al elemento que eliminas en la lista no le haces un delete no te va a
> > > > funcionar
> > > > ________________________________
>
> > > > rdi2k | Ezequiel Jadib | MSN: [EMAIL PROTECTED] | Blogs:
> > > >http://geeks.ms/blogs/ejadib/(ES) - ejadib.wordpress.com (EN)
>
> > > > ----- Original Message -----
> > > > From: Chili
> > > > To: NHibernate-Hispano
> > > > Sent: Tuesday, January 30, 2007 7:42 PM
> > > > Subject: [NHibernate-Hispano] Re: Problemas con un update
>
> > > > Lo que me dices es lo que intentaba hacer, es decir, elimino el
> > > > elemento de la lista en memoria, luego hago el update de la persona, y
> > > > ahí es donde me da error, por lo que ya no puedo seguir.
>
> > > > On 30 ene, 22:45, "Andrés G. Aragoneses [ knocte ]" <[EMAIL PROTECTED]>
> > > > wrote:
> > > > > Chili escribió:
>
> > > > > > Eso de hacer el delete de la propia entidad ya tiene más sentido :).
> > > > > > No obstante, como yo también soy un principiante, me gustaría que
> > > > > > alguien que estuviese más ducho me dijera si es necesario.
>
> > > > > > En cuanto a lo del inverse=true, es necesario? Lo digo porque yo no
> > > > > > necesito tener ninguna referencia desde EmailDA a
> > > > > > DatosPersonalesDA, y
> > > > > > según tengo entendido, inverse=true, es que puedes dar la vuelta, es
> > > > > > decir:
>
> > > > > > Persona 1 - n Direcciones
>
> > > > > > Persona.Direcciones[0].Persona
>
> > > > > Opino lo mismo que tú, que el inverse="true" sólo es necesario
> > > > > especificarlo en los casos en los que tienes acceso desde los dos
> > > > > sentidos de la colección, y sólo en uno de los extremos.
>
> > > > > Lo que yo haría es hacer dos cosas: eliminar el elemento de la lista,
> > > > > hacer SaveOrUpdate en Persona, y luego eliminar con Delete la
> > > > > dirección
> > > > > propiamente dicha, y luego Flush.
>
> > > > > Andrés [ knocte ]
>
> > > > > --
>
> > > --
> > > Dario Quintanahttp://blog.darioquintana.com.ar
>
> > > codigo.zip
> > > 8 KDescargar
>
> --
> Dario Quintanahttp://blog.darioquintana.com.ar
>
> codigo2.ZIP
> 5 KDescargar
--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección:
[email protected]
Para más, visite: http://groups-beta.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---