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

Responder a