Yo trabajo disfrazo todos los días. Además no estoy usando versión más vieja que esto: -> hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
El 1 de marzo de 2011 15:51, Fabio Maulo <[email protected]> escribió: > mmmm copias los xsd allí te quiero ver de que te disfrasas si trabajas con > mas de una version de NH. > > 2011/3/1 José F. Romaniello <[email protected]> > > 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 >> > > > > -- > 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
