En el medio hubo un cambio de pañales, un cambio de ropa y tuve que atender
tambien los albañiles...
Viste como es eso.... en EntityFramework esos problemas no lo tienen ;)

El 15 de marzo de 2010 12:51, Carlos Peix <[email protected]> escribió:

> Ya pasaron 4 horas desde que se sospecho del bug y 25 minutos desde que se
> confirmo y todavia estamos esperando. Ya me canse de hacer Update del
> trunk...
>
> De donde se baja Entity Framework?
>
> :-)
>
> ----------------------------------
> Carlos Peix
>
> 2010/3/15 Fabio Maulo <[email protected]>
>
> Bug confirmado
>>
>> El 15 de marzo de 2010 08:50, Fabio Maulo <[email protected]>escribió:
>>
>> Por ahora...
>>> ya que parece que es la primera vez que usas list, podes usar bag
>>> declarando explicitamente
>>> orm.Bag<Baleria>(x=> x.Imagenes);
>>> o usando ICollection como type the Imagenes (en el field por ejemplo)
>>>
>>> El 15 de marzo de 2010 08:47, Fabio Maulo <[email protected]>escribió:
>>>
>>> Mario,
>>>> parece que hay un bug en NHibernate.
>>>> list-index debería ser el tag actualizado de lo que ante era <index>.
>>>> <index> se usaba para todas las collection indexada (array, map, list,
>>>> primitive-array) luego se hicieron tag especificos pero se mantuvo el viejo
>>>> tag.
>>>> Veré de preparar un test y de hacer el fix en el trunk de NH.
>>>> Despues veo si cambio tambien el tag en ConfORM para que si se utilizan
>>>> los XML para trabajar con NH2.1.x pueda funcionar.
>>>> Gracias por el dato.
>>>>
>>>> El 15 de marzo de 2010 00:46, Fabio Maulo <[email protected]>escribió:
>>>>
>>>> la respuesta a la pregunta 1 es: debería usar la pos en la list solo
>>>>> la respuesta a la pregunta 2 es: el high es per persister per
>>>>> session-factory
>>>>>
>>>>> El 14 de marzo de 2010 21:25, Mario Dal Lago 
>>>>> <[email protected]>escribió:
>>>>>
>>>>> gracias fabio, agregue el cascade, que me faltaba y cambie el Ilist por
>>>>>> un iEnumerable, y puse un Ilist privado.
>>>>>>
>>>>>> el mapping se corrigio, pero ahora tengo otro problemas.
>>>>>>
>>>>>> el schema que se genera es
>>>>>>
>>>>>>  create table Galeria (
>>>>>>         GaleriaId INT not null,
>>>>>>        primary key (GaleriaId)
>>>>>>     )
>>>>>>
>>>>>>     create table Imagen (
>>>>>>         ImagenId INT not null,
>>>>>>        [Path] NVARCHAR(255) null,
>>>>>>        Description NVARCHAR(255) null,
>>>>>>        galeria_key INT null,
>>>>>>        idx INT not null,
>>>>>>        primary key (ImagenId)
>>>>>>     )
>>>>>>
>>>>>>
>>>>>>
>>>>>> y cuando grablo la galeria con el mismo codigo anterior se ejecutan
>>>>>> estas instrucciones
>>>>>>
>>>>>>
>>>>>> NHibernate: select next_hi from hibernate_unique_key with (updlock, 
>>>>>> rowlock)
>>>>>>
>>>>>> NHibernate: update hibernate_unique_key set next_hi = @p0 where next_hi 
>>>>>> = @p1;@p0
>>>>>>  = 2 [Type: Int32 (0)], @p1 = 1 [Type: Int32 (0)]
>>>>>>
>>>>>> NHibernate: select next_hi from hibernate_unique_key with (updlock, 
>>>>>> rowlock)
>>>>>>
>>>>>> NHibernate: update hibernate_unique_key set next_hi = @p0 where next_hi 
>>>>>> = @p1;@p0
>>>>>>  = 3 [Type: Int32 (0)], @p1 = 2 [Type: Int32 (0)]
>>>>>>
>>>>>> NHibernate: INSERT INTO Galeria (GaleriaId) VALUES (@p0);@p0 = 32768 
>>>>>> [Type: Int32 (0)]
>>>>>> NHibernate: INSERT INTO Imagen ([Path], Description, ImagenId) VA
>>>>>> LUES (@p0, @p1, @p2);@p0 = 'image01.jpg' [Type: String (4000)], @p1 = 
>>>>>> 'Bota1' [Type: String (4000)], @p2 = 65536 [Type: Int32 (0)]
>>>>>>
>>>>>>
>>>>>> y me da un
>>>>>> System.Data.SqlClient.SqlException: Cannot insert the value NULL into 
>>>>>> column 'idx', table 'CONFORMTRY.dbo.Imagen'; column does not allow 
>>>>>> nulls. INSERT fails.
>>>>>> The statement has been terminated.
>>>>>>
>>>>>> no se supone que el valor de idx lo tiene que tomar solo del list? o
>>>>>> me esta faltando setear algo a mano ?
>>>>>>
>>>>>>
>>>>>> y otra consulta, pq ejecuta 2 veces el select next_hi si estoy en la
>>>>>> misma session ?
>>>>>>
>>>>>>
>>>>>> gracias
>>>>>>
>>>>>>
>>>>>>  *
>>>>>> Mario Dal Lago*
>>>>>>
>>>>>>
>>>>>> --- El *dom 14-mar-10, Fabio Maulo <[email protected]>* escribió:
>>>>>>
>>>>>>
>>>>>> De: Fabio Maulo <[email protected]>
>>>>>> Asunto: Re: [NHibernate-Hispano] Duda sobre mapping
>>>>>> Para: [email protected]
>>>>>> Fecha: domingo, 14 de marzo de 2010, 16:42
>>>>>>
>>>>>>
>>>>>> Bueno varias cosas...
>>>>>> Primero tu domain:
>>>>>> - La propiedad Imagenes es de tipo IList<Imagen> con lo cual el
>>>>>> metodo AddImagen se puede no usar causando un pequeño desastre. Es 
>>>>>> probable
>>>>>> que no hayas escrito tus tests para el dominio.
>>>>>> Cuando se quiere proteger el Add lo que se publica es un
>>>>>> IEnumerable<T>
>>>>>>
>>>>>> Segundo el mapping:
>>>>>> Como lo unico que estas guardando es Galeria y te parece raro el error
>>>>>> que tira NHibernate deduzco que lo que quieres que Galeria  trabaje como
>>>>>> Aggregate (la tercera pregunta en de ConfORM es: ow manage
>>>>>> cascade-actions (read it as: which are aggregate-root)
>>>>>> Con:
>>>>>>  orm.Cascade<Galeria, Imagen>(Cascade.All);
>>>>>> Tu mapping será
>>>>>>    <class name="Galeria">
>>>>>>     <id name="Id" column="GaleriaId" type="Int32">
>>>>>>       <generator class="hilo" />
>>>>>>     </id>
>>>>>>     <list name="Imagenes" cascade="all">
>>>>>>       <key column="galeria_key" />
>>>>>>       <list-index />
>>>>>>       <one-to-many class="Imagen" />
>>>>>>     </list>
>>>>>>   </class>
>>>>>>   <class name="Imagen">
>>>>>>     <id name="Id" column="ImagenId" type="Int32">
>>>>>>       <generator class="hilo" />
>>>>>>     </id>
>>>>>>     <property name="Path" />
>>>>>>     <property name="Description" />
>>>>>>   </class>
>>>>>>
>>>>>> Notar que ese resultado es porque se trata de una OneToMany
>>>>>> unidirectional... hay otros puntos pero esos conciernen al uso de 
>>>>>> OneToMany
>>>>>> unidirectional en NH.
>>>>>>
>>>>>>
>>>>>> 2010/3/14 Mario Dal Lago 
>>>>>> <[email protected]<http://ar.mc513.mail.yahoo.com/mc/[email protected]>
>>>>>> >
>>>>>>
>>>>>>>
>>>>>>>  hola,
>>>>>>>
>>>>>>> tengo el siguiente dominio
>>>>>>>
>>>>>>>  public
>>>>>>> class EntityBase
>>>>>>>  {
>>>>>>> public virtual int Id { get; set; }
>>>>>>> }
>>>>>>>
>>>>>>> public class Imagen : EntityBase
>>>>>>> {
>>>>>>> public virtual string Path { get; private set; }
>>>>>>> public virtual string Description { get; private set; }
>>>>>>> internal Imagen()
>>>>>>> {
>>>>>>> }
>>>>>>> public Imagen(string description, string path)
>>>>>>> {
>>>>>>> this.Description = description;
>>>>>>> this.Path = path;
>>>>>>> }
>>>>>>> }
>>>>>>>
>>>>>>>
>>>>>>>  public class Galeria : EntityBase
>>>>>>>  {
>>>>>>> public virtual IList<Imagen> Imagenes { get; private set; }
>>>>>>> public Galeria()
>>>>>>> {
>>>>>>> Imagenes =
>>>>>>> new List<Imagen>();
>>>>>>> }
>>>>>>>
>>>>>>> public void AddImagen(Imagen img)
>>>>>>> {
>>>>>>> Imagenes.Add(img);
>>>>>>> }
>>>>>>> }
>>>>>>>
>>>>>>>
>>>>>>> estoy usando ConfOrm para hacer el mapping de esta forma:
>>>>>>>
>>>>>>>  var orm = new ObjectRelationalMapper();
>>>>>>>  orm.TablePerClass<
>>>>>>> Galeria>();
>>>>>>> orm.TablePerClass<
>>>>>>> Imagen>();
>>>>>>> orm.Patterns.PoidStrategies.Add(
>>>>>>> new HighLowPoidPattern());
>>>>>>> mapper.AddPoidPattern(mi => mi.Name ==
>>>>>>> "Id", (mi, idm) => 
>>>>>>> idm.Column(mi.ReflectedType.Name<http://mi.reflectedtype.name/>+
>>>>>>> "Id"));
>>>>>>>
>>>>>>> me genera el siguiente XML
>>>>>>>
>>>>>>> <?xml version="1.0" encoding="utf-8"?>
>>>>>>> <hibernate-mapping xmlns:xsi="
>>>>>>> http://www.w3.org/2001/XMLSchema-instance"; xmlns:xsd="
>>>>>>> http://www.w3.org/2001/XMLSchema
>>>>>>> " namespace="MDL.BahiaBsAs.Domain" assembly="MDL.BahiaBsAs.Domain" 
>>>>>>> xmlns="urn:nhibernate-mapping-2.2">
>>>>>>>   <class name="Galeria">
>>>>>>>     <id name="Id" column="GaleriaId" type="Int32">
>>>>>>>       <generator class="hilo" />
>>>>>>>     </id>
>>>>>>>     <list name="Imagenes">
>>>>>>>       <key column="galeria_key" />
>>>>>>>       <list-index />
>>>>>>>       <one-to-many class="Imagen" />
>>>>>>>     </list>
>>>>>>>   </class>
>>>>>>>  &nbs p;<class name="Imagen">
>>>>>>>     <id name="Id" column="ImagenId" type="Int32">
>>>>>>>       <generator class="hilo" />
>>>>>>>     </id>
>>>>>>>     <property name="Path" />
>>>>>>>     <property name="Description" />
>>>>>>>   </class>
>>>>>>> </hibernate-mapping>
>>>>>>>
>>>>>>>
>>>>>>> al quierer insertar registros con este codigo me da una excepcion
>>>>>>>
>>>>>>>  using
>>>>>>> (ISession s = factory.OpenSession())
>>>>>>> {
>>>>>>> using (ITransaction tx = s.BeginTransaction())
>>>>>>> {
>>>>>>>  var galeria = new Galeria();
>>>>>>> var imagen = new Imagen("Bota1","image01.jpg");
>>>>>>> galeria.AddImagen(imagen);
>>>>>>>  s.Save(galeria);
>>>>>>> tx.Commit();
>>>>>>> }
>>>>>>> }
>>>>>>> **
>>>>>>> me da una TransientObjectException
>>>>>>> con el siguiente mensaje : object references an unsaved transient
>>>>>>> instance - save the transient instance before flushing. Type: 
>>>>>>> Domain.Imagen,
>>>>>>> Entity: Domain.Imagen
>>>>>>> **
>>>>>>> **
>>>>>>> hacer un s.Save(imagen), no soluciona el problema.
>>>>>>>
>>>>>>> es la primera vez que mapeo un List y no se si lo estoy unsando en
>>>>>>> forma correcta.
>>>>>>>
>>>>>>> gracias
>>>>>>> * *
>>>>>>>
>>>>>>> Mario Dal Lago
>>>>>>>
>>>>>>> ------------------------------
>>>>>>>
>>>>>>> Encontra las mejores recetas con Yahoo! Cocina.
>>>>>>> http://ar.mujer.yahoo.com/cocina/
>>>>>>> --
>>>>>>> Para escribir al Grupo, hágalo a esta dirección:
>>>>>>> [email protected]<http://ar.mc513.mail.yahoo.com/mc/[email protected]>
>>>>>>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Fabio Maulo
>>>>>>
>>>>>> --
>>>>>> Para escribir al Grupo, hágalo a esta dirección:
>>>>>> [email protected]
>>>>>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>>>>>>
>>>>>>
>>>>>> ------------------------------
>>>>>>
>>>>>> Encontra las mejores recetas con Yahoo! Cocina.
>>>>>> http://ar.mujer.yahoo.com/cocina/
>>>>>>
>>>>>> --
>>>>>> Para escribir al Grupo, hágalo a esta dirección:
>>>>>> [email protected]
>>>>>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Fabio Maulo
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Fabio Maulo
>>>>
>>>>
>>>
>>>
>>> --
>>> Fabio Maulo
>>>
>>>
>>
>>
>> --
>> Fabio Maulo
>>
>>  --
>> Para escribir al Grupo, hágalo a esta dirección:
>> [email protected]
>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>>
>
>  --
> Para escribir al Grupo, hágalo a esta dirección:
> [email protected]
> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>



-- 
Fabio Maulo

-- 
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