Hola a todos!

Tengo una relación many-to-many de la siguiente manera:

Operation_Place <=> Operation_Place_Resource <=> Resource

*Entidades:*

    public class OperationPlace : BaseEntityEditable
{
        public virtual String Name { get; set; }

        public virtual String Description { get; set; }

        public virtual Char Enabled { get; set; }

        public virtual IList<Resource> Resources { get; set; }

        public OperationPlace()
        {
            Resources = new List<Resource>();
        }
    }

    public class Resource : BaseEntityEditable
    {
        public virtual String Name { get; set; }
    }

*Maps:*

  <class name="OperationPlace" table="S_Operation_Place" lazy="false" 
dynamic-update="true">

    <id name="Id" column="Id_Operation_Place" type="Int64">
      <generator class="Geraes.GLib.GDomainBasis.CustomTableHiLoGenerator, 
GLib.GDomainBasis" />
    </id>

    <property name="Name" column="Name" type="String" length="20" 
not-null="true" />

    <property name="Description" column="Description" type="String" 
length="60" not-null="true" />

    <property name="Enabled" column="Enabled" type="Char" not-null="true" />

    <idbag name="Resources" table="S_Operation_Place_Resource" 
generic="true" lazy="false" cascade="save-update" fetch="join">
      <collection-id type="Int64" column="Id_Operation_Place_Resource">
        <generator 
class="Geraes.GLib.GDomainBasis.CustomTableHiLoGenerator, 
GLib.GDomainBasis" />
      </collection-id>
      <key column="Id_Operation_Place" />
      <many-to-many column="Id_Resource" class="Resource"/>
    </idbag>

  </class>

  <class name="Resource" table="S_Resource" lazy="false" 
dynamic-update="true">
    
    <id name="Id" column="Id_Resource" type="Int64">
      <generator class="Geraes.GLib.GDomainBasis.CustomTableHiLoGenerator, 
GLib.GDomainBasis" />
    </id>

    <property name="Name" column="Name" type="String" length="60" 
not-null="false" />

  </class>

Mi aplicación utiliza NHibernate 3.2 y unhAddins.

Al agregar un nuevo recurso en la lista de los resources existentes en el 
OperationPlaceobjeto, NHibernate borra todos los resources existentes.

El comportamiento que espero es sólo la inclusión del nuevo resource.

Debido a que el NH lleva a cabo la exclusión de la lista de los resources 
antes de la inclusión del nuevo resources? 

Gracias!

Alexandre

Log:

10:31:43.777 DEBUG [SqlStatementLogger.LogCommand] nHibernate: 
    DELETE 
    FROM
        S_Operation_Place_Resource 
    WHERE
        Id_Operation_Place_Resource = :p0;
    :p0 = 10910 [Type: Int64 (0)] 

10:31:44.189 DEBUG [OracleDataClientBatchingBatcher.AddToBatch] nHibernate: 
Adding to batch:
    INSERT 
    INTO
        S_Operation_Place_Resource
        (Id_Operation_Place, Id_Operation_Place_Resource, Id_Resource) 
    VALUES
        (:p0, :p1, :p2);
    :p0 = 10504 [Type: Int64 (0)], :p1 = 11110 [Type: Int64 (0)], :p2 = 10 
[Type: Int64 (0)] 

10:31:44.206 DEBUG [OracleDataClientBatchingBatcher.AddToBatch] nHibernate: 
Adding to batch:
    INSERT 
    INTO
        S_Operation_Place_Resource
        (Id_Operation_Place, Id_Operation_Place_Resource, Id_Resource) 
    VALUES
        (:p0, :p1, :p2);
    :p0 = 10504 [Type: Int64 (0)], :p1 = 11111 [Type: Int64 (0)], :p2 = 1 
[Type: Int64 (0)] 

10:31:44.220 DEBUG [OracleDataClientBatchingBatcher.AddToBatch] nHibernate: 
Adding to batch:
    INSERT 
    INTO
        S_Operation_Place_Resource
        (Id_Operation_Place, Id_Operation_Place_Resource, Id_Resource) 
    VALUES
        (:p0, :p1, :p2);
    :p0 = 10504 [Type: Int64 (0)], :p1 = 11112 [Type: Int64 (0)], :p2 = 11 
[Type: Int64 (0)] 


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

Responder a