从Ravendb中加载特定类型的所有对象,并使用include加载相关文档
Load all objects of specific type from Ravendb and use include to load related documents
我正在尝试从 ravenDB 加载 Cause 类型的所有元素,并尝试加载每个特定对象中包含的 Include 相关文档(以提高性能)。例如,我试图将以下两个调用混合在一起:
加载所有文档:
_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) 在同一操作中使用 Multiple Includes(就像您在“Edit2”中所做的那样)是正确的。
参见:https://github.com/ravendb/book/blob/v4.0/Ch02/Ch02.md#includes
我正在尝试从 ravenDB 加载 Cause 类型的所有元素,并尝试加载每个特定对象中包含的 Include 相关文档(以提高性能)。例如,我试图将以下两个调用混合在一起:
加载所有文档:
_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) 在同一操作中使用 Multiple Includes(就像您在“Edit2”中所做的那样)是正确的。
参见:https://github.com/ravendb/book/blob/v4.0/Ch02/Ch02.md#includes