2010-02-05 5 views
2

Dans ma classe POCO, j'ai 16 attributs qui sont mappés à la table de base de données avec 16 colonnes. Maintenant, je dois écrire des méthodes qui ne récupèrent qu'un sous-ensemble de colonnes de la table en utilisant NHIbernate. Comment effectuer cette chose quand je ne veux pas chercher tous les attributs des objets persistés dans la base de données.Interroger des colonnes sélectionnées avec NHIbernate?

+0

Semblable? http://stackoverflow.com/questions/802251/lazy-loading-a-portion-of-a-record-with-nhibernate – Joel

Répondre

1

Les projections permettent de renvoyer autre chose qu'une liste d'entités à partir d'une requête. NHibernate peut également mapper le résultat projeté à une liste typée.

var proj = Projections.ProjectionList() 
    .Add(Projections.Property("Id"), "First") 
    .Add(Projections.Property("Username"), "Second"); 

var list2 = DetachedCriteria.For<User>() 
    .Add(Expression.Eq("Username", "lachlan")) 
    .GetExecutableCriteria(sessionFactory.GetCurrentSession()) 
    .SetProjection(proj) 
    .SetResultTransformer(Transformers.AliasToBean(typeof(Pair))) 
    .List<Pair>(); 
0

La version actuelle ne prend pas en charge les parties de chargement paresseuses d'une classe (je crois que la prochaine version inclut cette fonctionnalité).

Pour le moment, vous pouvez suivre le workaround proposed here.

Questions connexes