Otra forma sería mapear así:

<class name="User" table="Users">
    <id name="Id">
        <generator class="hilo"/>
    </id>
    <property name="UserName"/>
    <property name="FirstName"/>
    <property name="LastName"/>

    <map name="Attributes" table="UserAttributes">
        <key column="UserId"/>
        <index column="AttributeName" type="System.String"/>
        <element column="Attributevalue" type="System.String"/>
    </map>
</class>

La clase tiene esta pinta:
    public class User
    {
        public Usuer() { Attributes = new Dictionary<string, string>() }
        public virtual int Id { get; private set; }
        public virtual string Username { get; set; }
        public virtual string FirstName { get; set; }
        public virtual string LastName { get; set; }

        public virtual IDictionary<string, string> Attributes {get; private
set;}
    }


y consultar así:

from User u
where u.Attributes['Sexo'] = 'F'
and u.Attributes['Edad'] ....


ojo con edad, creo que deberías castearlo ya que estas guardando números
como string ;)
Pero creo que esta forma es mucho mas sencillo y requiere menos código.


Más sobre <map />
http://ayende.com/Blog/archive/2009/06/03/nhibernate-mapping-ndash-ltmapgt.aspx



El 28 de febrero de 2011 10:50, Gustavo Garcia <[email protected]> escribió:

> Hola Diego,
> Probaré con tu idea, pero tenía entendido que con los JOIN la consulta era
> más rápida, o no? pues tengo algo asi como 600000 usuarios (eso es harto o
> poco? :s)
> Te aviso como me va!
>
> Muchas gracias de todas maneras
>
> --
> 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