【问题标题】:Load all objects of specific type from Ravendb and use include to load related documents从 Ravendb 加载特定类型的所有对象并使用 include 加载相关文档
【发布时间】:2019-01-03 07:54:31
【问题描述】:

我正在尝试从 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);

【问题讨论】:

    标签: database ravendb


    【解决方案1】:

    1) 除了你在'Edit1'中提到的解决方案, 你也可以使用:

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


    2) 在同一操作中使用 Multiple Includes(就像您在“Edit2”中所做的那样)是正确的。
    见:https://github.com/ravendb/book/blob/v4.0/Ch02/Ch02.md#includes

    【讨论】:

    • 很抱歉,我的问题不是很清楚。我试图一次加载多个不同类型的实体,这就是我一次执行两个不同包含的原因。您在编辑中建议的方法似乎是指实体属于同一类型的情况。感谢您的回答!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 2014-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    相关资源
    最近更新 更多