RavenDB - 查询混合集合中的特定类型

时间:2013-11-05 21:58:13

标签: ravendb

几个星期前,我问乌鸦是否有可能在一个'集合'中有多种类型,我很喜欢它。但现在我开始编写一些索引/查询,并遇到问题..

我没有意识到这意味着所有类型都将被视为同一件事。我认为“集合”只是用于RavenDB Management Studio的字符串。所以......在这种情况下..

class Prototypes : { // ... }

进入具有身份模式的集合 items / prototypes /#

class Items : { // ... }

使用身份模式项目/#

进入“项目”集合

class Schemas : { // ... }

使用身份模式进入“items”集合 items / ## / schemas / ##

所以,如果我这样做......

var prototypes = RavenSession.Query<Prototype>().ToArray();

我也得到了所有的物品和架构。有没有办法具体说明我想从索引/查询中返回的事物类型?

最初将它们组合成一个系列的愿望仅仅是为了保持整洁,并且没有很多不同的收藏品。我当时没有意识到这种情况会发生,因为我认为类名对查询很重要,而不是集合名称。

1 个答案:

答案 0 :(得分:0)

您应该只从该查询中获取Prototype个项目。为动态查询提供类型时,构建的索引已将结果过滤到该类型。它使用Raven-Entity-Name元数据进行过滤,这一切都在后台神奇地发生。你不应该考虑太多。

您是否真的从此查询中返回ItemsSchemas类型?你不应该。

BTW - 这些是实体的非常奇怪的名字。通常,人们可以使用更具体的类,例如CustomerBlogPost。像PrototypesItemsSchemas这样的课程似乎很奇怪,除非您正在构建非常通用这些与您的域名相关的内容。