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



几周前,我问是否可以在 raven 的一个"集合"中拥有多种类型,我很喜欢它。但是现在我开始编写一些索引/查询,并且遇到了一个问题。

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

class Prototypes : { // ... }

进入具有标识模式项/原型/# 的"项目"集合

class Items : { // ... }

进入具有标识模式项的"项"集合/#

class Schemas : { // ... }

进入具有标识模式项/##/schemas/## 的"项"集合

所以如果我这样做...

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

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

将它们分组到一个集合中的最初愿望只是为了保持整洁,而不是有很多不同的集合。我当时没有意识到这会发生,因为我相信对查询很重要的是类名,而不是集合名。

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

您实际上是否从此查询中返回ItemsSchemas类型? 你不应该这样。

顺便说一句 - 这些是实体非常奇怪的名称。 通常可以使用更具体的类,例如 CustomerBlogPost . 拥有像PrototypesItemsSchemas这样的类似乎很奇怪,除非你正在构建一些非常通用的东西,并且这些与你的领域相关。

最新更新