Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在RavenDB中,如何查询嵌套的;“对象”;在文件中?_C#_Database_Nosql_Ravendb - Fatal编程技术网

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);