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

Responder a