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
