Hola de nuevo,

¿De verdad a nadie se le ocurre cómo podría hacer esto? ¿O lo estoy
enfocando mal?

;)

On 11 sep, 10:25, "David Siñuela Pastor (Siu)" <[EMAIL PROTECTED]>
wrote:
> Hola,
>
> Saludos a todos, es mi primera vez en la lista ;)
>
> Tengo una duda sobre una relación de uno a uno. Tengo dos clases,
> Actividad y Evento, las cuales pueden tenter una referencia de tipo
> uno a uno. Están relacionadas con una relación one-to-one y una many-
> to-one porque quiero que sean independientes cuando no existe la
> relación (si pongo one-to-one depende del identificador de la otra
> clase, si no me equivoco).
>
> Luego, en la base de datos, tengo una columna EventoId en la tabla de
> actividades, para poder relacionarlas.
>
> Lo que intento hacer es borrar un objeto de tipo Evento, el código
> importante es este:
>
> ...
>                 int id = Convert.ToInt32(e.CommandArgument);
>
>                 Evento n = SessionHolder.Current.Load<Evento>(id);
>                 SessionHolder.Current.Delete(n);
>
>                 t.Commit();
> ...
>
> Lo cual produce una excepción al dejar en la columna EventoId de
> Actividades la referencia a una Actividad que ya no existe. He pensado
> que puedo hacer esto antes de borrar:
>
>                 if (n.Actividad != null) n.Actividad.Evento = null;
>                 n.Actividad = null;
>
> Pero no me parece una buena solución, debería poder indicarlo en las
> propiedades de NHibernate.
>
> He estado probando con los valores de cascade y leyendo un motón de
> documentación y foros y no he conseguido encontrar ninguna información
> al respecto.
>
> ¿Alguna idea?
>
> Gracias!
>
> Los ficheros de mapping son estos:
>
> ----
>
> <?xml version="1.0" encoding="utf-8" ?>
> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
>                    namespace="Ajualcoi.org.CentreEsports.Entidades"
>                    assembly="Ajualcoi.org.CentreEsports" >
>   <class name="Actividad" table="centreesports_actividades">
>
>     <id name="Id" type="Int32">
>       <generator class="native" />
>     </id>
>
>     <property name="Nombre"                    type="String"     length="250" 
>    not-
> null="true" />
>     <property name="Descripcion"  type="String"                  
> length="4096"   not-
> null="true" />
>     <many-to-one name="Categoria" class="CategoriaActividad"
> column="CategoriaId" />
>
>     <many-to-one name="Evento"    class="Evento"    column="EventoId"
> unique="true"/>
>
>   </class>
> </hibernate-mapping>
>
> ----
>
> <?xml version="1.0" encoding="utf-8" ?>
> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
>                    namespace="Ajualcoi.org.CentreEsports.Entidades"
>                    assembly="Ajualcoi.org.CentreEsports" >
>         <class name="Evento" table="centreesports_eventos">
>
>                 <id name="Id" type="Int32">
>                         <generator class="native" />
>                 </id>
>
>     <property name="FechaInicio"   type="DateTime"                   not-
> null="true"     index="IX_eventos"  />
>     <property name="FechaFin"                type="DateTime"           not-
> null="true"     index="IX_eventos"  />
>     <property name="Hora"                type="DateTime"
> column="HoraInicio" />
>     <property name="DiaCompleto"   type="Boolean"
> column="DiaCompleto" />
>     <property name="Nombre"                    type="String"
> length="150"        not-null="true" />
>     <property name="Lugar"             type="String"         length="250" />
>
>     <property name="Resumen"                 type="String"
> length="4096"       not-null="true" />
>     <property name="Texto"             type="String"                         
> length="4096" />
>     <one-to-one name="Actividad"  class="Actividad"     property-
> ref="Evento"/>
>
>   </class>
> </hibernate-mapping>
>
> ----


--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups-beta.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---

Responder a