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
