C# 在RavenDB中,如何查询嵌套的;“对象”;在文件中?
如果我存储了如下所示的文档:C# 在RavenDB中,如何查询嵌套的;“对象”;在文件中?,c#,database,nosql,ravendb,C#,Database,Nosql,Ravendb,如果我存储了如下所示的文档: Category { public string Id {get;set;} public List<Category> Categories {get;set;} ... } 它首先获取包含子类别的类别,然后查询该类别上的子类别以提取特定的子类别 也许这样更好,我不知道。。。但似乎它在做2个步骤,而1个步骤就足够了 更新2 这些类别中的所有id都是手动添加的,没有RavenDB自动id(即使子类别也有id)。您的categor
Category {
public string Id {get;set;}
public List<Category> Categories {get;set;}
...
}
它首先获取包含子类别的类别,然后查询该类别上的子类别以提取特定的子类别
也许这样更好,我不知道。。。但似乎它在做2个步骤,而1个步骤就足够了
更新2
这些类别中的所有id都是手动添加的,没有RavenDB自动id(即使子类别也有id)。您的categories属性包含一个对象列表,您可以在其中拥有嵌套类别的id。子类别(您构建它的方式)将没有ID,只有数据
Category {
public string Id {get;set;}
public List<Category> Categories {get;set;}
...
}
类别{
公共字符串Id{get;set;}
公共列表类别{get;set;}
...
}
请尝试此模型和此查询:
Category {
public string Id {get;set;}
public List<string> CategoryIDs {get;set;}
...
}
var parent = session
.Include(i => i.CategoryIDs)
.Load<Category>("category/1");
var children= session.Load<Category>(parent.CategoryIDs);
类别{
公共字符串Id{get;set;}
公共列表类别ID{get;set;}
...
}
var parent=会话
.Include(i=>i.categoryId)
.荷载(“1类”);
var children=session.Load(parent.categoryId);
警告:我没有测试这段代码,因为我现在没有一个项目来测试它,但以下是我的来源:
请澄清:你想得到一个类别给一个子类别Id吗?我花了一段时间来摸索你说的话。。。但我认为您想说的是,子类别将没有id,因为RavenDB不会自动创建嵌套的文档id。在我的例子中,id都是手动分配的id,所有子类别也都有id。对不起,我不认为我的问题中有这个,我要补充一下。谢谢。不是说他们没有身份证,而是说他们不是文件。Raven不知道它们独立于父类别。当您从Raven请求数据时,您要么请求一个文档(通过ID或查询)要么请求一个缩减结果(通过缩减索引)。获取您要查找的数据的唯一方法是制作所有类别的文档,创建您自己的缩减索引(这对于嵌套来说可能很困难),或者完全按照您正在做的操作(拉母文档,剩下的拉临清)
Category {
public string Id {get;set;}
public List<string> CategoryIDs {get;set;}
...
}
var parent = session
.Include(i => i.CategoryIDs)
.Load<Category>("category/1");
var children= session.Load<Category>(parent.CategoryIDs);