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

Responder a