Может ли NHibernate запросить конкретных детей без ленивой загрузки всей коллекции?

Когда у меня есть объект-сущность с дочерней коллекцией один-ко-многим, и мне нужно запросить конкретный дочерний объект, есть ли особенность или какой-то умный шаблон, который я еще не придумал, чтобы избежать того, что NHibernate извлекает все детская коллекция?

Пример:

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
        }
    }
}

Я знаю, что это не лучший пример, потому что в этом случае можно было бы просто запросить дочерние объекты напрямую, но я столкнулся с ситуациями, когда у меня уже был родительский объект, и мне нужно было пройти через определенные поддеревья через него.

Ответы на вопрос(3)

Ваш ответ на вопрос