Parto de un modelo de datos existente que tiene que ser utilizado por
otras plataformas y que se integra con otros sistemas...

Así que imagina que para crear un campo hay que pedir permiso... :P

Cambio tu palabra intromisión por aportación.

Gracias a todos

On 16 mar, 14:07, Carlos Peix <[email protected]> wrote:
> Hola Juan, una pregunta.
>
> Vos decis: "...son mapeos generados que luego retoco para no empezar de
> cero."
>
> Es un sistema ya existente al que le estas reescribiendo la capa de acceso a
> datos? o es que empezas escribiendo las tablas y cuando las tenes, generas
> los mappings?
>
> Juzgando por la terminilogia que usaste en el primer post (tabla, registro,
> foreign key) parece ser mas bien la segunda. En ese caso te planteo: por que
> no empezar por los objetos y escribir los mappings a medida que vas creando
> objetos. Recorda que NH te permite regenerar el esquema de base de datos a
> partir de los mappings en una fraccion de segundo.
>
> Ademas, yo considero que escribir los mappings es parte del diseño fino de
> tu aplicacion, no es algo que debiera hacer una herramienta. En cambio la
> base de datos si es accesoria.
>
> Antes de que me maten los DBAs digo: una vez que la base de datos esta en
> marcha (y esta bien estructurada), las optimizaciones necesarias aparecen
> solas. En mi experiencia muchas de las optimizaciones que me ha tocado
> implementar se aplican a nivel de ORM (lazy load, joins, etc). Muy pocas a
> nivel de base de datos (indices, etc), suponiendo que seguis las reglas
> estandar tales como tener primary keys, tener indices sobre las foreign
> keys, etc.
>
> Si ya analizaste esta otra opcion y la descartaste, pido disculpas por la
> intromisión.
>
> Un saludo
>
> ----------------------------------
> Carlos Peix
>
> 2010/3/16 Juan Cuello <[email protected]>
>
> > Hola,
>
> > Los ID's son todos del tipo:
>
> >    <id name="ID" column="TRAMIT_ID" type="System.Decimal" unsaved-
> > value="0">
> >      <generator class="native"/>
> >    </id>
>
> > Para la relación Tramit -> XML (1 a 1) tengo:
>
> > Tramit:
> >    <one-to-one name="Xml" access="field.pascalcase-underscore"
> > fetch="join" constrained="true" foreign-key="none"
> > class="IntGin.Core.GSIT.Domain.GsXml, IntGin.Core.GSIT.Domain" />
>
> > Xml:
> >     <many-to-one name="Tramit" access="field.pascalcase-underscore"
> > column="TRAMIT_ID" unique="true" />
>
> > Para la relación 1 a n tengo:
>
> > Tramit:
>
> >    <set name="HistoricEstats" cascade="all" inverse="true"
> > lazy="true" access="field.pascalcase-underscore">
> >      <key>
> >        <column name="TRAMIT_ID"/>
> >      </key>
> >      <one-to-many class="IntGin.Core.GSIT.Domain.GsHistoricEstats,
> > IntGin.Core.GSIT.Domain"/>
> >    </set>
>
> > Historic:
>
> >    <many-to-one name="Tramit"  access="field.pascalcase-underscore"
> > outer-join="auto" insert="true" update="true">
> >      <column name="TRAMIT_ID"/>
> >    </many-to-one>
>
> > Gracias a vuestras indicaciones funciona correctamente pero sigo
> > teniendo que establecer la relación en los dos sentidos...¿Siempre
> > tiene que ser así?
>
> > Por cierto, son mapeos generados que luego retoco para no empezar de
> > cero.
>
> > Muchas gracias
>
> > On 16 mar, 12:54, Fabio Maulo <[email protected]> wrote:
> > > Sacale el not-null al la referencia al parent en el child y luego
> > controla
> > > los queries.
> > > Si ves algo que no te guste mandá tambien el mapping de los ID.
>
> > > @José
> > > Esos mappings me parecen generados.
>
> > > El 16 de marzo de 2010 08:12, José F. Romaniello
> > > <[email protected]>escribió:
>
> > > > Si en lugar de hacer A.Lista.Add(B) hago B.A = A y lo agrego a la
>
> > > > lista funciona.
>
> > > > Esto es lo que deberías hacer, si utilizas INVERSE, la clave aca de lo
> > que
> > > > podes estar haciendo mal se llama inverse.
> > > > Inverse=True significa que la relación la controla la otra entidad, si
> > lo
> > > > pones false, que es el valor por defecto significa que la relación la
> > > > controla el lado donde esta declarada la collection.
>
> > > > En general, hacemos algo así, dentro de la clase Tramit, agregamos un
> > > > metodo AddHistoric que hace lo siguiente:
>
> > > > AddHistoric(Historic historic)
> > > > {
> > > >    this.Lista.Add(historic);
> > > >    historic.Tramit = this;
> > > > }
>
> > > > Pero sospecho que en tu caso no debería ser si quiera inverse=true.
>
> > > > Con respecto al caso 2, creo que deberías usar el tag one-to-one,
> > aunque
> > > > creo que como esta puesto el "cascade" debería hacer el insert.
>
> > > > Te comento por otro lado que insert="true" y update="true" son valores
> > por
> > > > defecto, no hace falta que lo pongas.
>
> > > > saludos
>
> > > > --
> > > > 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

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