Hola a todos

Estoy atravesando por el siguiente problema. He definido las siguientes 
clases:

        public class ReducedModalityReductionDataSet : Entity<Guid>
        {
                public ReducedModalityReductionDataSet()
                {
                        ReducedModalityReductionDataSetItems = new 
Iesi.Collections.Generic.HashedSet<ReducedModalityReductionDataSetItem>();
                }
 
                public virtual System.Int32 DataSetNumber { get; set; }
                public virtual System.String DataSetName { get; set; }
                public virtual System.String Company { get; set; }
                public virtual System.Byte Status { get; set; }
 
                public virtual ISet<ReducedModalityReductionDataSetItem> 
ReducedModalityReductionDataSetItems { get; protected set; }
 
                public virtual void 
AddReductionDataSetItem(ReducedModalityReductionDataSetItem reductionItem)
                {
                        reductionItem.ReducedModalityReductionDataSet = this;
                        ReducedModalityReductionDataSetItems.Add(reductionItem);
                }
        }


        public class ReducedModalityReductionDataSetItem
        {
                public ReducedModalityReductionDataSetItem()
                {
                        ReducedModalityReductionDataSetPeriods = new 
Iesi.Collections.Generic.HashedSet<ReducedModalityReductionDataSetPeriod>();
                }
 
                public virtual System.Guid Id { get; set; }
                public virtual System.String Cuil { get; set; }
                public virtual Nullable<System.DateTime> FechaAlta { get; set; }
                public virtual System.String Modalidad { get; set; }
 
                public virtual ReducedModalityReductionDataSet 
ReducedModalityReductionDataSet { get; set; }
                public virtual ISet<ReducedModalityReductionDataSetPeriod> 
ReducedModalityReductionDataSetPeriods { get; protected set; }
 
                public virtual void 
AddPeriod(ReducedModalityReductionDataSetPeriod period)
                {
                        period.ReducedModalityReductionDataSetItem = this;
                        ReducedModalityReductionDataSetPeriods.Add(period);
                }
        }


        public class ReducedModalityReductionDataSetPeriod : ComponentBase
        {
                public virtual System.Int32 MonthNumber { get; set; }
                public virtual System.String MonthYear { get; set; }
                public virtual System.String ReductionValue { get; set; }
 
                public virtual ReducedModalityReductionDataSetItem 
ReducedModalityReductionDataSetItem { get; set; }
 
                public override bool Equals(object entity)
                {
                        if (entity == null)
                                return false;
 
                        if (ReferenceEquals(this, entity))
                                return true;
 
                        return false;
                }
 
                public override int GetHashCode()
                {
                        return this.MonthNumber.GetHashCode() +
                                this.MonthYear.GetHashCode() +
                                this.ReductionValue.GetHashCode();
                }
        }

En la clase ReducedModalityReductionDataSetItem he definido un colección de 
tipo  ReducedModalityReductionDataSetPeriod el cual está definido como 
component en el archivo HBM:


        <class name="ReducedModalityReductionDataSetItem" 
table="ReducedModalityReductionDataSetItem" schema="dbo">             <id 
name="Id" access="property" column="Id">                    <generator 
class="assigned" />          </id>
                <property name="Cuil" type="System.String" column="Cuil" />     
        <property name="FechaAlta" type="System.DateTime" column="FechaAlta" /> 
        <property name="Modalidad" type="System.String" column="Modalidad" />
                <many-to-one name="ReducedModalityReductionDataSet" 
class="ReducedModalityReductionDataSet" column="DataSet_Id" />                  
            <set name="ReducedModalityReductionDataSetPeriods" 
table="ReducedModalityReductionDataSetPeriod" lazy="true" 
order-by="MonthNumber">                    <key column="DataSetItem_Id" />      
                                   <composite-element 
class="ReducedModalityReductionDataSetPeriod">                               
<parent name="ReducedModalityReductionDataSetItem" />                           
<property name="MonthNumber" type="System.Int32" column="MonthNumber" 
not-null="true" />                                <property name="MonthYear" 
type="System.String" column="MonthYear" not-null="true" />                      
     <property name="ReductionValue" type="System.String" 
column="ReductionValue" not-null="true" />                 </composite-element> 
           </set>  </class>


Los datos para persistir son obtenidos a través de archivos excel, los cuales 
pueden ser seleccionado de manera multiple.


Se iniciá una transacción y se hace un COMMIT (o ROLLBACK, si hay un error) 
cada vez que se lee un archivo. Al recorrer los archivos y empezar a guardar 
los datos, los datos con el primer archivo lo persiste correctamente. Al leer 
el segundo archivo y durante el COMMIT, veo en el archivo LOG (configurado con 
log4net), veo que se crean ejecutan varias sentencias DELETE.


Log file extract:


2013-05-23 09:48:19,715 [PayrollAppClientThread] DEBUG NHibernate.SQL [(null)] 
- 
    
        DELETE 
        FROM

        ReducedModalityReductionDataSetPeriod 

        WHERE

        DataSetItem_Id = @p0 

        AND MonthNumber = @p1 

        AND MonthYear = @p2 

        AND ReductionValue = @p3;

    
        @p0 = cd7ac39f-fa74-4571-abf3-7a2ec1b7a363 [Type: Guid (0)], @p1 = 2 
[Type: Int32 (0)], @p2 = 'FEB-13' [Type: String (4000)], @p3 = '201' [Type: 
String (4000)]

2013-05-23 09:48:19,828 [PayrollAppClientThread] DEBUG NHibernate.SQL [(null)] 
- 
    
        DELETE 
        FROM

        ReducedModalityReductionDataSetPeriod 

        WHERE

        DataSetItem_Id = @p0 

        AND MonthNumber = @p1 

        AND MonthYear = @p2 

        AND ReductionValue = @p3;

    
        @p0 = cd7ac39f-fa74-4571-abf3-7a2ec1b7a363 [Type: Guid (0)], @p1 = 3 
[Type: Int32 (0)], @p2 = 'MAR-13' [Type: String (4000)], @p3 = '201' [Type: 
String (4000)]

2013-05-23 09:48:19,921 [PayrollAppClientThread] DEBUG NHibernate.SQL [(null)] 
- 
    
        DELETE 
        FROM

        ReducedModalityReductionDataSetPeriod 

        WHERE

        DataSetItem_Id = @p0 

        AND MonthNumber = @p1 

        AND MonthYear = @p2 

        AND ReductionValue = @p3;

    
        @p0 = cd7ac39f-fa74-4571-abf3-7a2ec1b7a363 [Type: Guid (0)], @p1 = 4 
[Type: Int32 (0)], @p2 = 'ABR-13' [Type: String (4000)], @p3 = '201' [Type: 
String (4000)]


Y se queda así de manera indefinida.

Me gustaría saber por que sucede esto y si tengo que tener en cuenta alguna 
configuración adicional.


Espero que me puedan ayudar con este problema.


Muchas gracias de antemano.

-- 
-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
--- 
Has recibido este mensaje porque estás suscrito al grupo "NHibernate-Hispano" 
de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos 
electrónicos, envía un correo electrónico a 
[email protected].
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.


Responder a