从 Ravendb 加载所有特定类型的对象,并使用包含加载相关文档



我正在尝试从ravenDB加载Cause类型的所有元素,并包含每个特定对象中包含的相关文档(以提高性能)。例如,我正在尝试将以下两个调用混合在一起:

要加载所有文档:

 _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)除了您在"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

最新更新