adiviná porque puede cambiar el xsd sin cambiar el namespace

2011/3/1 José F. Romaniello <[email protected]>

> 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
>



-- 
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

Responder a