De todas formas con el asunto del no tener Id en las entidades ConfORM tiene muy poco a que ver Febrero 2009 *The POID is only part of the persistence and we don’t have the ID property in the domain. This is useful especially in this case because I want run the same code changing only the id-generator-strategy, and the ID-Type, in the mapping.* http://fabiomaulo.blogspot.com/2009/02/nh210-generators-behavior-explained.html
2011/2/16 Juan Cuello <[email protected]> > Fabio, > > En un link que has dado de ConfORM, se hace el mapeo sin tener una > propiedad ID en la entidad. Y se lanza una pregunta al vuelo que no > tengo respuesta: > > ¿Cómo se realizaría la comparación entre objetos que no son transient? > ¿Sólo por sus propiedades? ¿Y cómo puedo saber en tiempo de ejecución > si es transient o no? > > Gracias > > On 12 feb, 14:40, Fabio Maulo <[email protected]> wrote: > > Si se implementa la traducción en español de este applierhttp:// > code.google.com/p/codeconform/source/browse/ConfOrm/ConfOrm.Sh... > > > > <http://code.google.com/p/codeconform/source/browse/ConfOrm/ConfOrm.Sh.. > .>Tambien > > podes hacer que la propiedad "Fecha" termine en una column de tipo DATE. > > En tu caso, ya que se trata de una propiedad de la clase Extraccion, no > creo > > sea apropiado... tal vez el nombre mas apropiado para la propiedad sea: > > Momento > > ;-) > > > > ConfORM ayuda a los responsable de proyectos a que todo el equipo siga > > patrones de implementacción bien determinados (que pueden ser los mios, > lo > > de Carlos o lo que definan ustedes). > > > > Are you ConfORM ? > > > > 2011/2/12 Fabio Maulo <[email protected]> > > > > > > > > > > > > > > > > > > > > > mapper.Customize<Cliente>(c => c.Property(p => p.Nombre, m => > m.Unique(true))); > > > > > mapper.Customize<Cliente>(c => c.Property(p => p.Nombre, m => > m.NotNullable(true))); > > > > > podes escribirla en una sola linea ya que el concern es lo mismo (DDL > > > customization). > > > Igualmente yo no lo haría de esa forma ya que lo que realmente estas > > > expresando es que la propiedad Nombre del cliente representa la que se > > > domina : Natural Id (el identificador que tiene una entidad en su > entorno > > > natural) > > > O sea: > > > orm.TablePerClass(new[] { typeof(Cliente), typeof(Cuenta), > > > typeof(Extraccion) }); > > > > > orm.VersionProperty<Cuenta>(c => c.Version); > > > orm.NaturalId<Cliente>(cliente=> cliente.Nombre); > > > > > orm.Cascade<Cliente, Cuenta>(Cascade.All); > > > > > mapper.Customize<Cliente>(c => c.Property(p => p.Nombre, m => > > > m.NotNullable(true))); > > > > > Que, aplicando los patterns definido en > > >https://bitbucket.org/fabiomaulo/nhmysticpara MSSQL2008, en XML es: > > > > > <class name="Cliente" table="Clientes"> > > > <id type="Guid"> > > > <generator class="guid.comb" /> > > > </id> > > > <natural-id> > > > <property name="Nombre" not-null="true" /> > > > </natural-id> > > > <many-to-one name="Cuenta" column="CuentaId" cascade="all" /> > > > <bag name="Extracciones" access="field.camelcase-underscore" > > > inverse="true" > > > cascade="all,delete-orphan"> > > > <key column="ClienteId" on-delete="cascade" /> > > > <one-to-many class="Extraccion" /> > > > </bag> > > > </class> > > > > > <class name="Cuenta" table="Cuentas"> > > > <id type="Guid"> > > > <generator class="guid.comb" /> > > > </id> > > > <version name="Version" /> > > > <property name="Saldo" /> > > > </class> > > > > > <class name="Extraccion" table="Extracciones"> > > > <id type="Guid"> > > > <generator class="guid.comb" /> > > > </id> > > > <many-to-one name="Cliente" column="ClienteId" /> > > > <property name="Fecha" type="DateTime2" /> > > > <property name="Importe" /> > > > </class> > > > > > 2011/2/12 [email protected] <[email protected]> > > > > > Pienso que usar ConfOrm es una buena opción, aun para quienes están > > >> empezando y hasta quizás "sobre todo para quienes están empezando", > > >> ¿por qué? > > > > >> Porque con ConfOrm van a aprender a escribir mappings como si > > >> estuvieran haciendo pair programming con gente de mucha experiencia en > > >> nhibernate. > > > > >> decirle a ConfOrm "mapeame estas clases" es como preguntarle al Tano > > >> "ma come scrivere un mapping di queste classi" > > > > >> A partir de los mappings que genera ConfOrm podemos generar los xml, > > >> si bien esto no es necesario para usar ConfOrm, si podemos ver que nos > > >> generó. > > > > >> Recién escribí un blog-post sobre algo que me llamó la atención, hace > > >> un tiempo ya que uso nhibernate y sigo aprendiendo cosas nuevas, esta > > >> vez me la enseñó ConfOrm:http://goo.gl/5N4wK > > > > >> por la mitad del blog-post está el código que escribe los mappings en > > >> xml a partir de lo generado por ConfOrm (por si a alguien le > > >> interesa). > > > > >> Si ademas estamos generando el schema de la db desde nhibernate (con > > >> SchemaExport) es casi transparente el mantenimiento de la db durante > > >> el desarrollo. > > > > >> Otro tema es si la db no es parte de nuestro desarrollo ya sea legacy > > >> o prediseñada (e inmutable). > > > > >> saludos. > > >> nelo. > > > > >> 2011/2/11 NFreex <[email protected]>: > > > > >> > Por mi parte hace menos de un mes comence con Nhibernate la version > > >> > 3.0.0... > > >> > Gracia a mi compañero del trabajo, comenzamos con algo nuevo... > para > > >> > mi muy dificil de comprender pero me e estado adaptando a esta nueva > > >> > herramienta. > > > > >> > Nos adentramos a el a traves de la configuracion del mapeo a traves > de > > >> > xml les cuento que el comiezo era algo complicado aunque aun no > domine > > >> > por completo lo que se puede hacer dentro del xml por lo demas ya > > >> > comprendo ciertas cosas, a medida que pasa el tiempo, me voy > adaptando > > >> > al xml. > > > > >> > Mi recomendacion es que que si tienen un proyecto de menos de 25 a > 30 > > >> > clases pueden trabajarlo con xml.. > > >> > nosotros tenemos alrededor de 22 clases y creciendo. > > >> > Siempre con cuidado de no cometer algun analisis mal empleado y > > >> > hechar varias clases hacia atras o mejor dicho reconfigurar pero ya > > >> > teniendo lo que se debe cambiar ya seria un paseo... > > > > >> > Ya cuando tengamos proyecto mas grandes de mayor capacidad creo que > > >> > podremos emigrar a algo como Conform pero por el momento conozcamos > a > > >> > NHibernate a fondo desde los comienzos del xml... > > > > >> > Los invitos a aquellso que no esten familiarizados con el mapping en > > >> > xml, a que no olviden las costumbres antiguas donde todo era a > pulmon, > > >> > algo asi como el Viejo MS-DOS donde para entrar a una carpeta habia > > >> > que escribir cd nombredecarpeta y ahora con windows solo hay que > dar > > >> > clic. Aveses el clic no nos demuestra que hay por debajo de todo > > >> > esto ... > > > > >> > Por eso es mejor conocer al enemigo desde sus entrañas para luego > > >> > saber como enfrentarlo visualmente. > > >> > Saludos desde Panama > > > > >> > -- > > >> > 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 > > > > -- > > 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 > -- 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
