1
我曾經看過這個問題曾經發布過一次,但它從來沒有得到解決 - 原來的海報並不是很清楚,所以我再次嘗試了一次更清晰。RavenDB - 子實體包括
考慮下面的嘲笑結構...
public class Container {
public string Id { get; set; }
public List<Entity> Entities { get; set; }
}
public class Entity {
public string Id { get; set; }
public List<string> Sub_Entities { get; set; }
}
public class Sub_Entity {
public string Id { get; set; }
public List<string> Sub_Entities { get; set; }
}
這意味着Sub_Entity從未規格化,因此實際JSON對象上不存在與其相關的ID,所以我結束了這樣的對象。
======= 「容器/ 1」 =======
{
"Entities" : [
{
"Id" : "entities/1",
"Sub_Entities" : [
"sub_entities/1",
"sub_entities/2",
"sub_entities/3"
]
}
]
}
======= 「sub_entities/1」 =======
{
"Sub_Entities" : [
"sub_entities/4",
"sub_entities/5",
"sub_entities/6"
]
}
======= 「sub_entities/2」 =======
{
"Sub_Entities" : [
"sub_entities/7",
"sub_entities/8",
"sub_entities/9"
]
}
======= 「sub_entities/3」 ====== =
{
"Sub_Entities" : [
"sub_entities/10",
"sub_entities/11",
"sub_entities/12"
]
}
現在我想真正優化我從數據庫中提取所有數據的方式。所以我首先將sub_entities包含在初始容器中。
我已經做了這樣的:
var container = DocumentSession
.Include("Entities,Id")
.Include("Entities,Sub_Entities")
.Load<Container>("containers/1");
我還與以下使用謂詞來完成它。
var container = DocumentSession
.Include<Container>(n => n.Entities.SelectMany(y => y.Id))
.Include<Container>(n => n.Entities.SelectMany(y => y.Sub_Entities))
.Load<Container>("containers/1");
這讓我初始集一個請求sub_entities的,但有什麼我可以做更深層次的查詢,以確保嵌套sub_entities可以包含在相同的請求?
這已經在郵件列表中得到解答 –