Fluent nHibernate Выборочная загрузка для коллекций - PullRequest
2 голосов
/ 29 июня 2011

Мне было просто интересно, загружает ли объект, содержащий коллекцию, например, сообщение, которое может содержать 0 -> n комментариев, если вы можете определить, сколько комментариев нужно возвращать.

На данный момент у меня есть это:

public IList<Post> GetNPostsWithNCommentsAndCreator(int numOfPosts, int numOfComments)
    {
        var posts = Session.Query<Post>().OrderByDescending(x => x.CreationDateTime)
            .Take(numOfPosts)
            .Fetch(z => z.Comments)
                .Fetch(z => z.Creator).ToList();

        ReleaseCurrentSession();
        return posts;
    }

Есть ли способ добавить Skip и Take to Comments, чтобы обеспечить некоторую функциональность подкачки в коллекции, чтобы вы не загружали много ненужных вещей.

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

Единственный реальный способ обойти это - не выполнять выборку по комментариям, а выполнить отдельный выбор по комментариям, чтобы упорядочить по дате создания и затем выбратьнапример, первые 5, а затем поместить возвращенный результат в объект Post?

Буду признателен за любые мысли / ссылки по этому поводу.

Спасибо,

Jon

1 Ответ

0 голосов
/ 25 января 2012

Простое извлечение выполняет лево-внешнее объединение связанной таблицы, чтобы можно было гидрировать объекты сбора данными. То, что вы хотите сделать, потребует отдельного запроса по конкретным объектам. Оттуда вы можете использовать любое количество конструкций, чтобы ограничить ваш набор результатов (пропустить / взять, setmaxresults и т. Д.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...