Kann NHibernate nach bestimmten Kindern abfragen, ohne die gesamte Sammlung zu verzögern?

Wenn ich ein Entitätsobjekt mit einer Eins-zu-Viele-Unterobjektsammlung habe und nach einem bestimmten Unterobjekt fragen muss, gibt es ein Feature oder ein cleveres Muster, das mir noch nicht eingefallen ist, um zu vermeiden, dass NHibernate das gesamte Objekt abruft Kindersammlung?

Beispiel:

class Parent 
{
    public virtual int Id { get; proteced set; } // generated PK
    public virtual IEnumerable<Child> Children { get; proteced set; }
}

class Child
{
    public virtual int Id { get; protected set; } // generated PK
    public virtual string Name { get; protected set; }
    public virtual Parent Parent { get; protected set; }
}

// mapped with Fluent

class Service
{

    private readonly ISessionFactory sessionFactory;

    public Service(ISessionFactory sessionFactory)
    {
        this.sessionFactory = sessionFactory;
    }

    void DoSomethingWithChildrenNamedBob(int parentId)
    {
        using(var session = sessionFactory.OpenSession())
        {
            var parent = session.Get<Parent>(parentId);
            // Will cause lazy fetch of all children!
            var childrenNamedBob = parent.Children.Where(c => c.Name == "Bob"); 
            // do something with the children
        }
    }
}

Ich weiß, dass dies nicht das beste Beispiel ist, da in diesem Fall wahrscheinlich nur die untergeordneten Entitäten direkt abgefragt werden, aber ich bin auf Situationen gestoßen, in denen ich bereits ein übergeordnetes Objekt hatte und bestimmte Unterbäume durchqueren musste.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage