如果我存储的文档如下:
Category {
public string Id {get;set;}
public List<Category> Categories {get;set;}
...
}
基本上是一个带有子类别的类别。就我而言,只有2级深度(1个父级,n个子类别)。
查询所有类别效果很好,显示一个很好的列表(也有嵌套的子类别列表)。我的用户只能点击子类别,查看所选类别中的内容。我希望将一个子类别拉出Category
。
鉴于子类别ID,我如何将其中一个子类别拉出来,因为它是独立的Category
?
更新
我想补充一点,我这样做是为了解决这个问题:
Category pCat = RavenSession.Query<Category>().Where(x => x.Categories.Any(c => c.Id == id)).FirstOrDefault();
Category cat = pCat.Categories.Where(x => x.Id == id).FirstOrDefault();
首先获取包含子类别的类别,然后查询该类别的子类别以提取特定的子类别。
也许这样更好,我不知道......但是当1足够时,它似乎正在做两步。
更新2
这些类别中的所有ID都是手动添加的,没有RavenDB自动ID(甚至子类别都有Id)。
答案 0 :(得分:2)
您的 Categories 属性包含一个对象列表,您可以在其中拥有嵌套类别的ID。子类别,您构建的方式,不会有ID,只有数据。
Category {
public string Id {get;set;}
public List<Category> Categories {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);
警告:我没有测试过这段代码,因为我现在还没有一个项目来测试它,但这是我的来源: