Si, no tuve en cuenta que en el documento "version" venía después de "discriminator" y antes de "property". Pensé que dentro de "class" en el archivo de mapeo no importaba el orden.
Gracias por la ayuda. Saludos. El 1 de marzo de 2011 16:02, Fabio Maulo <[email protected]> escribió: > te paso el link... en el PDF está escrito lo mismo ya que ambos se generan > a partir del mismo fuente > http://nhforge.org/doc/nh/en/index.html#mapping-declaration-xmlns > > > 2011/3/1 Bruno Reato <[email protected]> > >> Gracias José por la pronta respuesta. Si, definitivamente va después del >> atributo "id", jamás lo hubiese encontrado al error, jejeje. Estuve leyendo >> el pdf nhibernate_reference.pdf pero no encontré que diga nada acerca de >> eso. Te cuento que estoy realizando las pruebas en Monodevelop, y coloqué >> los xsd en el lugar correspondiente para tener intellisense pero me deja >> colocar el atributo "version" en cualquier posición. Lo voy a probar en VS >> para ver si es un error de Monodevelop ó del xsd. >> >> Saludos. >> >> El 1 de marzo de 2011 15:41, José F. Romaniello >> <[email protected]>escribió: >> >> Bruno, creo que el atributo "version" va inmediatamente despues del ID. >>> Te recomiendo poner los XSD que estan en el zip de nhibernate en la >>> carpeta: >>> C:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas >>> >>> para tener intellisense en los archivos xml, y darte cuenta más rapido de >>> los errores. >>> hay otros que usan otra técnica que es poner los xsd en la carpeta de >>> librerías de tu solución y apuntar los xmls ahí... pero a mi me parece mas >>> simple lo que te dije antes :) >>> >>> 2011/3/1 Bruno Reato <[email protected]> >>> >>>> Hola a todos, estoy intentando mapear una entidad sencilla y agregarle >>>> el control de concurrencia a través de un campo DateTime, la clase tiene >>>> esta estructura: >>>> >>>> // AbstractEntity.cs >>>> namespace ModelNH >>>> { >>>> public class AbstractEntity<TId> >>>> { >>>> public virtual TId Id { get; protected set; } >>>> public override bool Equals(object obj) >>>> { >>>> return Equals(obj as AbstractEntity<TId>); >>>> } >>>> >>>> private static bool IsTransient(AbstractEntity<TId> obj) >>>> { >>>> return obj != null && Equals(obj.Id, default(TId)); >>>> } >>>> >>>> private Type GetUnproxiedType() >>>> { >>>> return GetType(); >>>> } >>>> public virtual bool Equals(AbstractEntity<TId> other) >>>> { >>>> if (other == null) >>>> return false; >>>> if (ReferenceEquals(this, other)) >>>> return true; >>>> if (!IsTransient(this) && !IsTransient(other) && Equals(Id, other.Id)) >>>> { >>>> var otherType = other.GetUnproxiedType(); >>>> var thisType = GetUnproxiedType(); >>>> return thisType.IsAssignableFrom(otherType) || >>>> otherType.IsAssignableFrom(thisType); >>>> } >>>> return false; >>>> } >>>> public override int GetHashCode() >>>> { >>>> if (Equals(Id, default(TId))) >>>> return base.GetHashCode(); >>>> return Id.GetHashCode(); >>>> } >>>> } >>>> } >>>> >>>> >>>> // Entity.cs >>>> namespace ModelNH >>>> { >>>> public class Entity: AbstractEntity<int> >>>> { >>>> public Entity(){} >>>> } >>>> } >>>> >>>> // TestEntity.cs >>>> namespace ModelNH >>>> { >>>> public class TestEntity: Entity >>>> { >>>> public virtual String Name { get; set; } >>>> public virtual DateTime LastUpdated { get; set; } >>>> } >>>> } >>>> >>>> y el archivo de mapeo: >>>> <!-- mappings/TestEntity.hbm.xml --> >>>> <?xml version="1.0"?> >>>> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="ModelNH" >>>> namespace="ModelNH"> >>>> <class name="TestEntity" table="TEST"> >>>> <id name="Id" column="TEST_ID" type="int"> >>>> <generator class="sequence"> >>>> <param name="sequence">GEN_TEST_ID</param> >>>> </generator> >>>> </id> >>>> <property name="Name" column="NAME" type="String" /> >>>> <version name="LastUpdated" column="LAST_UPDATED" type="timestamp" /> >>>> </class> >>>> </hibernate-mapping> >>>> >>>> Y el programa de consola: >>>> >>>> //Program.cs >>>> >>>> using System; >>>> using NHibernate; >>>> using NHibernate.Cfg; >>>> using System.Data; >>>> using ModelNH; >>>> using System.IO; >>>> using NHibernate.Linq; >>>> >>>> namespace PruebaNHibernate >>>> { >>>> class Program >>>> { >>>> private static ISessionFactory factory; >>>> private static ISession sess; >>>> public static void Main(string[] args) >>>> { >>>> try{ >>>> Configuration cfg = new Configuration().Configure(); >>>> cfg.AddDirectory(new DirectoryInfo(@".\mappings")); >>>> factory = cfg.BuildSessionFactory(); >>>> using(sess = factory.OpenSession()){ >>>> var tests = sess.Query<TestEntity>(); >>>> tests.ForEach(t => Console.WriteLine(t.Name)); >>>> } >>>> }catch(Exception e){ >>>> Console.WriteLine(e.Message); >>>> } >>>> Console.Write("Press any key to continue . . . "); >>>> Console.ReadKey(true); >>>> } >>>> } >>>> } >>>> >>>> Estoy utilizando NHibernate 3.0.0.4000 y me conecto a una DB Firebird >>>> (aunque no creo que ésto último influye en el error). Cuando ejecuto el >>>> programa obtengo la excepción: >>>> >>>> G:\Projects\ModelNH\PruebaNHibernate\bin\Debug\mappings\TestEntity.hbm.xml(10,4): >>>> XML validation error: El elemento 'class' en espacio de nombres >>>> 'urn:nhibernate-mapping-2.2' tiene un elemento secundario 'version' en >>>> espacio de nombres 'urn:nhibernate-mapping-2.2' no válido. Lista esperada >>>> de >>>> elementos posibles: 'property, many-to-one, one-to-one, component, >>>> dynamic-component, properties, any, map, set, list, bag, idbag, array, >>>> primitive-array, join, subclass, joined-subclass, union-subclass, loader, >>>> sql-insert, sql-update, sql-delete, filter, resultset, query, sql-query' en >>>> espacio de nombres 'urn:nhibernate-mapping-2.2'. >>>> >>>> Press any key to continue . . . >>>> >>>> Saludos. >>>> >>>> Bruno. >>>> >>>> -- >>>> 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 >> >> >> -- >> 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
