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
