Загрузите все объекты определенного типа из Ravendb и используйте include для загрузки связанных документов - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь загрузить все элементы типа Причина из ravenDB, а также Включить связанных документов, содержащихся в каждом конкретном объекте (для повышения производительности). Например, я пытаюсь смешать следующие два вызова:

Чтобы загрузить все документы:

 _session.Advanced.DocumentQuery<Cause>()
         .WhereEquals(x => x.IsDeleted, false)
         .WaitForNonStaleResultsAsOfLastWrite()
         .ToArray();

Чтобы включить соответствующие документы в вызов:

_session.Include<Cause>(x => x.ValueIds)
        .Load(idCause);

Кто-нибудь знает, как я мог подойти к этой проблеме?

Редактировать Для всех, кто сталкивается с этой проблемой, возможно одно из следующих решений:

_session.Query<Cause>()
        .Include(x => x.ValueIds)
        .Where(x => x.IsDeleted == false);

Редактировать 2 Я столкнулся с другой проблемой, но она связана с вышеизложенным. Если я хотел добавить дополнительный элемент в вызов Include, кто-нибудь знает, как мне этого добиться? Я попробовал следующее, но я не думаю, что это правильный способ сделать это, потому что выполняются дополнительные вызовы в базу данных:

_session.Query<Cause>()
        .Include(x => x.ValueIds)
        .Include(x => x.GroupIds)
        .Where(x => x.IsDeleted == false);

1 Ответ

0 голосов
/ 03 января 2019

1) В дополнение к решению, которое вы упомянули в 'Edit1' , вы также можете использовать:

var results = session.Advanced.DocumentQuery<Cause>()
     .Include(x => x.ValueIds)
     .WhereEquals(x => x.IsDeleted, false)
     .ToList();


2) Использование Несколько включений на той же операции (как вы делаете в ' Edit2 ') правильно.
См .: https://github.com/ravendb/book/blob/v4.0/Ch02/Ch02.md#includes

...