Linq pour NHibernate et fetch mode de chargement impatient

y a-t-il un moyen de configurer le fetchmode pour avoir envie de plus d'un objet en utilisant linq pour nhibernate. Il semble y avoir une méthode d'expansion qui ne me permet de définir qu'un seul objet. Cependant j'ai besoin pour plus d'un objet. Est-ce possible? Merci

44
demandé sur Chris S 2009-05-07 01:13:51

4 réponses

simplement l'utiliser plus d'une fois.

IList<Entity> GetDataFromDatabase()
{
    var query = session.Linq<Entity>();
    query.Expand("Property1");
    query.Expand("Property2");
    return query.ToList();
}
18
répondu Paco 2009-05-06 23:57:20

Le nouveau fournisseur Linq t-il un peu différemment:

var customers = session.Query<Customer>().Fetch(c => c.Orders).ToList();

Plus ici: http://mikehadlow.blogspot.com/2010/08/nhibernate-linq-eager-fetching.html

102
répondu Mike Hadlow 2010-08-06 11:22:07

autant que je puisse voir, ce n'est pas équivalent: SetFetchMode hydrate un arbre d'objets et la méthode Expand récupère un produit cartésien.

8
répondu Jeff 2009-09-20 20:23:24

Dans contiune @Mike Hadlow réponse, aller chercher niveau suivant (petits-enfants) que vous devez faire:

var customers = session.Query<Customer>() .FetchMany(c => c.Orders) .ThenFetchMany(o => o.OrderLines).ToList();

0
répondu ilans 2016-12-15 13:15:45