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.