2010-03-31 4 views
0

J'ai une classe:Comment interroger les collections dans NHibernate

public class User 
{ 
    public virtual int Id { get; set; } 
    public virtual string Name { get; set; } 
    public virtual IDictionary<string, string> Attributes { get; set; } 
} 

et un fichier de mappage:

<class name="User" table="Users"> 
    <id name="Id"> 
     <generator class="hilo"/> 
    </id> 
    <property name="Name"/> 

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

Alors maintenant, je peux ajouter de nombreux attributs et des valeurs à un utilisateur. Comment puis-je interroger ces attributs afin que je puisse obtenir ie. Obtenez tous les utilisateurs où attributename est "Age" et la valeur d'attribut est "20"? Je ne veux pas faire cela dans foreach parce que je peux avoir des millions d'utilisateurs ayant chacun ses attributs uniques.

S'il vous plaît aider

Répondre

0

Vous pouvez le faire en utilisant HQL.

Par exemple:

from User u join u.Attributes attr 
where index(attr) = 'Age' and attr = '20' 
Questions connexes