<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish">
    <title>gmane.comp.windows.dotnet.nhibernate.user.spanish</title>
    <link>http://blog.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6397"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6396"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6395"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6394"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6393"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6392"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6391"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6390"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6389"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6388"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6387"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6386"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6385"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6384"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6383"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6382"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6381"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6380"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6379"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6378"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6397">
    <title>Re: IndexOutOfRangeException al ejecutar IQuery y problema de sincronizacion</title>
    <link>http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6397</link>
    <description>2008/12/1 Diego Jancic &lt;jancic&lt; at &gt;gmail.com&gt;

Nada raro en el codigo que origina el error.

        public IList GetProcessSegments()
        {
            lock (LockReader)
            {
                return GetReadSession().CreateQuery("from
ProcessSegment").List();
            }
        }

Todavia no tenemos un TestCase que reprodusca el error, los test corren bien
pero falla al correr la aplicacion en el servidor de pruebas.

--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección: NHibernate-Hispano&lt; at &gt;googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---

</description>
    <dc:creator>Jose Ramirez</dc:creator>
    <dc:date>2008-12-01T21:20:05</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6396">
    <title>Re: IndexOutOfRangeException al ejecutar IQuery y problema de sincronizacion</title>
    <link>http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6396</link>
    <description>2008/12/1 Dario Quintana &lt;contacto&lt; at &gt;darioquintana.com.ar&gt;



Si se logra reproducir.

</description>
    <dc:creator>Fabio Maulo</dc:creator>
    <dc:date>2008-12-01T21:10:51</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6395">
    <title>Re: IndexOutOfRangeException al ejecutar IQuery y problema de sincronizacion</title>
    <link>http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6395</link>
    <description>Si no es por concurrencia, hay que hacer un TestCase y reportar el issue.

2008/12/1 GLM. net &lt;glm.net&lt; at &gt;gmail.com&gt;




</description>
    <dc:creator>Dario Quintana</dc:creator>
    <dc:date>2008-12-01T20:50:38</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6394">
    <title>Re: IndexOutOfRangeException al ejecutar IQuery y problema de sincronizacion</title>
    <link>http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6394</link>
    <description>Hola,

No se la solucion, pero yo me acuerdo de haber recibido ese error y no tiene nada que ver (necesariamente) con concurrencia… Lamentablemente tampoco me acuerdo la solución.

Podes pegar como estas haciendo el query?

 

Salu2

 

From: NHibernate-Hispano&lt; at &gt;googlegroups.com [mailto:NHibernate-Hispano&lt; at &gt;googlegroups.com] On Behalf Of GLM.net
Sent: Monday, December 01, 2008 5:35 PM
To: NHibernate-Hispano&lt; at &gt;googlegroups.com
Subject: [NHibernate-Hispano] Re: IndexOutOfRangeException al ejecutar IQuery y problema de sincronizacion

 

cada thread con su cuento...

 

Estamos 100% seguros que esta excepcion es por concurrencia? El stack no se ve incoherente, o sea el query que muestra el stack es el mismo que nhib habria querido ejecutar.

 

O sea, las SqlConnection no son thread safe, o sea que ahi va a morir seguro con un "SqlConnection is in use" 

 

2008/12/1 Dario Quintana &lt;contacto&lt; at &gt;darioquintana.com.ar&gt;

Hola

 

Si lo estás haciendo Thread-safe a mano a tu Session, debería no haber problemas, quizás estás teniendo algún problema en el lockeo.

 

Y por que en vez de lockear sesiones, no tenés algún manager que te entregue las entregue. No entiendo cómo tenes el contexto de tu sesión funcionando.

 

2008/12/1 Jose Ramirez &lt;josehr&lt; at &gt;gmail.com&gt;

 

 

On Mon, Dec 1, 2008 at 11:50 AM, Fabio Maulo &lt;fabiomaulo&lt; at &gt;gmail.com&gt; wrote:

No uses una instancia de ISession en mas de un thread contemporaneamente; si lo haces esas son cosas que pueden pasar.

 

OK, y como puedo hacer entonces ?

La aplicacion funciona con un hilo principal que puede generar consultas y activar timers segun ciertas condiciones, esos timers (en otros hilos) pueden llegar a necesitar hacer consultas tambien, o navegar relaciones que terminan generando Selects.

 

saludos

 

Jose Ramirez

 

 

 




</description>
    <dc:creator>Diego Jancic</dc:creator>
    <dc:date>2008-12-01T20:45:38</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6393">
    <title>Re: IndexOutOfRangeException al ejecutar IQuery y problema de sincronizacion</title>
    <link>http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6393</link>
    <description>cada thread con su cuento...
Estamos 100% seguros que esta excepcion es por concurrencia? El stack no se
ve incoherente, o sea el query que muestra el stack es el mismo que nhib
habria querido ejecutar.

O sea, las SqlConnection no son thread safe, o sea que ahi va a morir seguro
con un "SqlConnection is in use"

2008/12/1 Dario Quintana &lt;contacto&lt; at &gt;darioquintana.com.ar&gt;



</description>
    <dc:creator>GLM.net</dc:creator>
    <dc:date>2008-12-01T19:35:20</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6392">
    <title>Re: Mapear una Base de Datos !!!</title>
    <link>http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6392</link>
    <description>


Carlos Peix escribió:

De acuerdo, yo tambien lo hago asi. Ademas, en lo personal me queda mas 
descriptivo, mas alla de que veo que se usan mucho los propertys para 
pasar estado en la mayoria de codigo C# que llega a mi alcance, y por 
eso te hice la pregunta.


Quedo claro. Muchas gracias Carlos.

Saludos,
Raul

--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección: NHibernate-Hispano&lt; at &gt;googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---


</description>
    <dc:creator>Raul Lopez</dc:creator>
    <dc:date>2008-12-01T14:41:48</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6391">
    <title>Re: IndexOutOfRangeException al ejecutar IQuery y problema de sincronizacion</title>
    <link>http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6391</link>
    <description>Hola
Si lo estás haciendo Thread-safe a mano a tu Session, debería no haber
problemas, quizás estás teniendo algún problema en el lockeo.

Y por que en vez de lockear sesiones, no tenés algún manager que te entregue
las entregue. No entiendo cómo tenes el contexto de tu sesión funcionando.


2008/12/1 Jose Ramirez &lt;josehr&lt; at &gt;gmail.com&gt;



</description>
    <dc:creator>Dario Quintana</dc:creator>
    <dc:date>2008-12-01T14:12:50</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6390">
    <title>Re: IndexOutOfRangeException al ejecutar IQuery y problema de sincronizacion</title>
    <link>http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6390</link>
    <description>cada thread con su session/conversation.en uNhAddIns
tenes ThreadLocalSessionContext o si preferis
el ThreadLocalConversationalSessionContext que se ocupa de eso.

El 1 de diciembre de 2008 11:00, Jose Ramirez &lt;josehr&lt; at &gt;gmail.com&gt; escribió:



</description>
    <dc:creator>Fabio Maulo</dc:creator>
    <dc:date>2008-12-01T14:12:24</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6389">
    <title>Re: IndexOutOfRangeException al ejecutar IQuery y problema de sincronizacion</title>
    <link>http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6389</link>
    <description>


OK, y como puedo hacer entonces ?
La aplicacion funciona con un hilo principal que puede generar consultas y
activar timers segun ciertas condiciones, esos timers (en otros hilos)
pueden llegar a necesitar hacer consultas tambien, o navegar relaciones que
terminan generando Selects.

saludos

Jose Ramirez

--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección: NHibernate-Hispano&lt; at &gt;googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---

</description>
    <dc:creator>Jose Ramirez</dc:creator>
    <dc:date>2008-12-01T14:00:01</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6388">
    <title>Re: IndexOutOfRangeException al ejecutar IQuery y problema de sincronizacion</title>
    <link>http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6388</link>
    <description>No uses una instancia de ISession en mas de un thread contemporaneamente; si
lo haces esas son cosas que pueden pasar.

2008/12/1 Jose Ramirez &lt;josehr&lt; at &gt;gmail.com&gt;



</description>
    <dc:creator>Fabio Maulo</dc:creator>
    <dc:date>2008-12-01T13:50:48</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6387">
    <title>IndexOutOfRangeException al ejecutar IQuery y problema de sincronizacion</title>
    <link>http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6387</link>
    <description>Hola,

Estamos teniendo el siguiente problema en una aplicacion que usa NH
1.2.0.4000 en framework 1.1
Al ejecutar la consulta e intentar procesar el resultset dice que en el
resultset no existe una columna con determinado nombre, en realidad si uds.
miran el Select se daran cuenta que la columna existe.
Al parecer hay un problema de sincronizacion donde se le esta cambiando el
resultset desde otro thread, yo se que ISession no es thread-safe pero
nosotros tenemos todas las consultas envueltas con bloques lock para evitar
eso.
Alguien tiene idea que puede estar pasando?



NHibernate.ADOException: could not execute query
[ select systemopti0_.[Key] as column1_6_, systemopti0_.Value as Value6_
from GenOptions systemopti0_ ]
[SQL: select systemopti0_.[Key] as column1_6_, systemopti0_.Value as Value6_
from GenOptions systemopti0_] ---&gt; System.IndexOutOfRangeException:
column1_6_
   at System.Data.Common.FieldNameLookup.GetOrdinal(String fieldName)
   at System.Data.SqlClient.SqlDataReader.GetOrdinal(String name)
   at NHibernate.Driver.NHybridDataReader.GetOrdinal(String name)
   at NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String name)
   at NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String[]
names, ISessionImplementor session, Object owner)
   at NHibernate.Loader.Loader.GetKeyFromResultSet(Int32 i, ILoadable
persister, Object id, IDataReader rs, ISessionImplementor session)
   at NHibernate.Loader.Loader.GetRowFromResultSet(IDataReader resultSet,
ISessionImplementor session, QueryParameters queryParameters, LockMode[]
lockModeArray, EntityKey optionalObjectKey, IList hydratedObjects,
EntityKey[] keys, Boolean returnProxies)
   at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session,
QueryParameters queryParameters, Boolean returnProxies)
   at
NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor
session, QueryParameters queryParameters, Boolean returnProxies)
   at NHibernate.Loader.Loader.DoList(ISessionImplementor session,
QueryParameters queryParameters)
   --- End of inner exception stack trace ---
   at NHibernate.Loader.Loader.DoList(ISessionImplementor session,
QueryParameters queryParameters)
   at NHibernate.Loader.Loader.List(ISessionImplementor session,
QueryParameters queryParameters, ISet querySpaces, IType[] resultTypes)
   at NHibernate.Hql.Classic.QueryTranslator.List(ISessionImplementor
session, QueryParameters queryParameters)
   at NHibernate.Impl.SessionImpl.Find(String query, QueryParameters
parameters, IList results)
   at NHibernate.Impl.SessionImpl.Find(String query, QueryParameters
parameters)
   at NHibernate.Impl.QueryImpl.List()


Jose Ramirez
http://www.josehr.com.ar

--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección: NHibernate-Hispano&lt; at &gt;googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---

</description>
    <dc:creator>Jose Ramirez</dc:creator>
    <dc:date>2008-12-01T13:33:28</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6386">
    <title>Re: Mapear una Base de Datos !!!</title>
    <link>http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6386</link>
    <description>
Hola Raul,


Lo que quise decir es que no uso property { get; set; }
"automaticamente". Cuando diseñas tus objetos desde el comportamiento
y cuando pones ese comportamiento dentro de los objetos (lo cual apoya
el criterio de encapsulamiento), con el tiempo te vas dando cuenta de
que expones mas comportamiento en forma de metodo y menos estado en
forma de propiedades.

Un ejemplo sencillo:

public class Cliente {
   private bool activo;
   public bool Activo {
      get { return activo; }
      set { activo = value; }
   }
}

La pregunta que debemos hacernos: esta realmente encapsulado el dato
"activo"? a mi me parece que no mucho, menos aun con la "ayuda" que
nos dan las nuevas versiones de C# al generarnos directamente el field
privado.

Mucho mejor, a mi criterio, es esta implementacion:

public class Cliente {
   private bool activo;
   public bool EsActivo() {
      return activo;
   }
}

Este ejemplo no muestra mucho la diferencia, concedido, pero si hay
diferencia cuando esto se aplica como politica, por ejemplo en un caso
en el que postee aqui:

http://groups.google.com/group/NHibernate-Hispano/browse_thread/thread/b2a3b7cfe90adf94/51bfef15585e510b

Carlos Peix
--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección: NHibernate-Hispano&lt; at &gt;googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---


</description>
    <dc:creator>Carlos Peix</dc:creator>
    <dc:date>2008-12-01T10:41:45</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6385">
    <title>Re: Mapear una Base de Datos !!!</title>
    <link>http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6385</link>
    <description>
Por si a alguien le interesa, hay algo "parecido" que genera DSL's y
editores gráficos a partir de tus meta-modelos, y trae lenguaje de
plantillas para ellos:
http://www.openarchitectureware.org

Está pensado para Java pero, obviamente, las plantillas pueden
contener lo que uno quiera :-)

Francisco A. Lozano



On Mon, Dec 1, 2008 at 11:27, Carlos Peix &lt;carlos.peix&lt; at &gt;gmail.com&gt; wrote:

--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección: NHibernate-Hispano&lt; at &gt;googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---


</description>
    <dc:creator>Francisco A. Lozano</dc:creator>
    <dc:date>2008-12-01T10:29:33</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6384">
    <title>Re: Mapear una Base de Datos !!!</title>
    <link>http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6384</link>
    <description>

On Nov 30, 7:35 pm, "Angel \"Java\" Lopez" &lt;ajlopez2...&lt; at &gt;gmail.com&gt;
wrote:

Cierto Angel, disculpas. Es una diferencia ciertamente importante.
Incluso andaba dando vueltas un diseñador visual, no?

Carlos Peix
--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección: NHibernate-Hispano&lt; at &gt;googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---


</description>
    <dc:creator>Carlos Peix</dc:creator>
    <dc:date>2008-12-01T10:27:34</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6383">
    <title>Re: Mapear una Base de Datos !!!</title>
    <link>http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6383</link>
    <description>
Hola gente!

Una aclaracion: AjGenesis (http://www.codeplex.com/ajgenesis) no genera 
desde la base de datos. Genera desde donde quieran partir, un modelo de Uds, 
o de los que vienen en los ejemplos, o desde la base, o desde donde decidan.

Bien se puede construir un modelo para AjGenesis que describa objetos, 
herencia, relaciones, entidades, agregados, y tener el mapeo pendiente o en 
otra parte del modelo. Por ejemplo, algo similar a los modelos de los que 
parte Entity Framework.

Nos leemos!

Angel "Java" Lopez
http://www.ajlopez.com/
http://twitter.com/ajlopez


----- Original Message ----- 
From: "Carlos Peix" &lt;carlos.peix&lt; at &gt;gmail.com&gt;
To: &lt;NHibernate-Hispano&lt; at &gt;googlegroups.com&gt;
Sent: Saturday, November 29, 2008 10:55 AM
Subject: [NHibernate-Hispano] Re: Mapear una Base de Datos !!!



Hola Reynier,

Amplio lo que dice Fabio.

Nhibernate es un O/R-M (object relational mapper) y permite resolver la
interaccion entre el mundo de los objetos y el mundo de las bases de datos
relacionales.

Hay distintas preferencias para la implementacion, la mia (y la de varios
por aca) es diseñar el modelo de objetos según las necesidades del software
que estas diseñando y luego resolver *la persistencia* de esos objetos en
una base de datos relacional mediante un ORM.

Un sistema diseñado según los principios de orientacion a objetos se basa,
justamente en objetos. Esos objetos, según la definicion mas comun, se
componen de estado y comportamiento.

Cuando los objetos no estan en memoria, cuando no estan vivos, es necesario
preservar su estado. Esto es lo que hace NH, es decir, colabora en la
hibernacion (de ahí el nombre, supongo) de esos objetos almacenando el
estado en bases de datos relacionales.

Esto implica que es bastante comun que el modelo de objetos no
necesariamente tenga un mapeo directo o simple con la estructira relacional,
de ahí que estos mapeos sean escritos manualmente, por ejemplo en XML.


Hay otra tecnica por la cual los mapeos y las clases se generan directamente
y mediante una herramienta desde la estructura de base de datos. En mi
opinion esto no es OOD, puesto que los objetos surgen automaticamente del
diseño de la base de datos, yo le diria TOD (table oriented design).

Si esto es lo que estas buscando, sugiero que busques informacion sobre
generacion de codigo y de produtos como CodeSmith, MyGeneration, ajGenesis,
etc. No puedo ayudarte mucho mas que esto porque no uso mucho esas
herramientas.


Hago la salvedad de otras herramientas de generacion de codigo que permiten
agregar informacion al mapeo y brindan mas libertad para ajustar modelos de
objetos diferentes al de la base de datos. Tampoco puedo aportar mucho aca
porque no las uso tampoco pero puedo nombrar a Cooperator, Subsonic, etc.

Saludos

Carlos Peix

-----Mensaje original-----
De: NHibernate-Hispano&lt; at &gt;googlegroups.com
[mailto:NHibernate-Hispano&lt; at &gt;googlegroups.com] En nombre de Reynier Lester
Enviado el: Viernes, 28 de Noviembre de 2008 06:51 p.m.
Para: NHibernate-Hispano
Asunto: [NHibernate-Hispano] Mapear una Base de Datos !!!

Tengo una duda y es como puedo mapear las tablas de una base de datos con
NHibernate , he visto algunos ejemplos y se como se hace al revés me explico
desde mi aplicación teniendo las clases  y lo xml de mapeno de hibernate
salvo datos en la mi base de datos pero esto se puede hacer al revés porque
no he encontrado como hacerlo.





--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección: NHibernate-Hispano&lt; at &gt;googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---


</description>
    <dc:creator>Angel "Java" Lopez</dc:creator>
    <dc:date>2008-11-30T21:35:41</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6382">
    <title> Re: ¿Cómo se puede mapear un MailAddress a una columna String?</title>
    <link>http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6382</link>
    <description>
It worked.

This is the code of MailAddressUserType:

===================&gt;

using System;
using System.Net.Mail;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.UserTypes;

namespace SimpleOption.Soros.Dominio {



  public class MailAddressUserType : IUserType
  {


    private static readonly NHibernate.SqlTypes.SqlType[] SQL_TYPES =
{ NHibernateUtil.String.SqlType };

    public NHibernate.SqlTypes.SqlType[] SqlTypes {
      get { return SQL_TYPES;}
    }

    public Type ReturnedType {
      get {return typeof(MailAddress); }
    }


    public int GetHashCode (object obj) {
      return ((MailAddress)obj).GetHashCode();
    }


    public  new bool Equals (object x, object y) {
      if (object.ReferenceEquals(x,y)) return true;
      if (x == null || y == null) return false;
      return x.Equals(y);
    }


    public object Replace(object original, object target, object
owner)
    {
      return original;
    }

    public object Assemble(object cached, object owner)
    {
        return cached;
    }

    public object Disassemble(object value)
    {
        return value;
    }




    public object DeepCopy (object value) { return value; }


    public bool IsMutable {
      get { return false; }
    }






    public object NullSafeGet (IDataReader dr,
       string[] names,
       object owner)
    {
      object obj0 = NHibernateUtil.String.NullSafeGet(dr, names[0]);
      if (obj0 ==  null)  return null;
      string dirección = (string)obj0;
      return new MailAddress(dirección);
    }


    public void NullSafeSet(IDbCommand cmd, object obj, int index)
    {
      if (obj == null) {
((IDataParameter) cmd.Parameters[index]).Value = DBNull.Value ;
      } else {
MailAddress email = (MailAddress)obj;
((IDataParameter) cmd.Parameters[index]).Value = email.ToString();
      }
    }
  }
}


--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección: NHibernate-Hispano&lt; at &gt;googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---


</description>
    <dc:creator>José María</dc:creator>
    <dc:date>2008-11-30T18:26:21</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6381">
    <title>Re: Informix con NHibernate. No se Conecta</title>
    <link>http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6381</link>
    <description>Si te gustan los Attributes podes usar NHibernate.Mapping.Attributes
http://sourceforge.net/project/showfiles.php?group_id=216446

2008/11/30 Sergio Arancibia &lt;arancibiasergio&lt; at &gt;gmail.com&gt;



</description>
    <dc:creator>Fabio Maulo</dc:creator>
    <dc:date>2008-11-30T18:07:03</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6380">
    <title>Re: Informix con NHibernate. No se Conecta</title>
    <link>http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6380</link>
    <description>Gracias por el consejo.. es cierto tiene su lado positivo y negativo.
Te cuento que llegue nuevamente a nhibernate porque quice hacer un miniframe
de persitencia utilizando atributos dentro de las clases de la forma

......
        [AtribPersistenciaCampos("Sector", "sol_cab", "sector",
TiposCampos._char, ClavePrimara.PK1, 8, 0,
AceptaNull.NoAceptaNulos,"string","")]
        public string Sector
        {
            get { return _sector; }
            set { _sector = value; }
        }
        [AtribPersistenciaCampos("Tpo_com", "sol_cab", "tpo_com",
TiposCampos._char, ClavePrimara.PK1, 4, 0, AceptaNull.NoAceptaNulos,
"string", "")]
        public string Tpo_com
        {
            get { return _tpo_com; }
            set { _tpo_com = value; }
        }
 ....
con clases tipo POJO.. logre que me genere el string de select , insert y
update en forma dinamica
leyendo los atributos de cada clase, renegando como loco por cierto
Todo iba mas o menos bien hasta llegar al DataSet, pero desde eso llegar a
una coleccion
de objeto mios fue un parto se  me quemaron los papeles y dije "no invento
la polvora" o si la invento
en unos de estos años miro como esta hecho en hibernate mirando los fuentes
cuando tenga tiempo..

Mas alla de la anecdota me parece que dejo el nhibernate como esta y me
dedico a hacer el sistema
que bastante lejos estoy y utilizare el reflexion para otra parte del
desarrollo.

Saludos
SAR

2008/11/30 Fabio Maulo &lt;fabiomaulo&lt; at &gt;gmail.com&gt;


--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección: NHibernate-Hispano&lt; at &gt;googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---

</description>
    <dc:creator>Sergio Arancibia</dc:creator>
    <dc:date>2008-11-30T17:58:15</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6379">
    <title>Re: Informix con NHibernate. No se Conecta</title>
    <link>http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6379</link>
    <description>Te doy un consejo apasionado.No uses los fuentes de NH para saber que
hiciste mal te puedo asegurar que no es la mejor forma de aprender a usarlo.
Pero bueno si te gusta mirar los funtes, pues adelante.

2008/11/30 Sergio Arancibia &lt;arancibiasergio&lt; at &gt;gmail.com&gt;



</description>
    <dc:creator>Fabio Maulo</dc:creator>
    <dc:date>2008-11-30T17:22:19</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6378">
    <title> Re: ¿Cómo se puede mapear un MailAddress a una columna String?</title>
    <link>http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6378</link>
    <description>
On 30 nov, 13:55, "Fabio Maulo" &lt;fabioma...&lt; at &gt;gmail.com&gt; wrote:


Ok, estoy en ello, si tengo algún problema te lo diré.

Un saludo y muchas gracias.
--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección: NHibernate-Hispano&lt; at &gt;googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---


</description>
    <dc:creator>José María</dc:creator>
    <dc:date>2008-11-30T17:14:49</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6377">
    <title>Re: Mapear una Base de Datos !!!</title>
    <link>http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.user.spanish/6377</link>
    <description>
Hola Carlos,
Gracias por contestar.
En relidad me exprese mal (una vez mas...), ya que la  pregunta era por 
el lado de porque no acostumbras publicar a  traves de propertys.
Vengo siguiendo el hilo desde el comienzo y comparto tu enfoque, 
simplemente me entro la duda concretamente con lo de los {get; set;}, y 
por que no acostumbras usarlos.
Esto puede ser off-topic en este ambito, asi que si ves que vale la 
pena, lo podemos seguir en la lista del MUG.

Saludos,
Raul.


Carlos Peix escribió:

--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección: NHibernate-Hispano&lt; at &gt;googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---


</description>
    <dc:creator>Raul Lopez</dc:creator>
    <dc:date>2008-11-30T16:50:44</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.windows.dotnet.nhibernate.user.spanish">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.windows.dotnet.nhibernate.user.spanish</link>
  </textinput>
</rdf:RDF>
