几周前,我问是否可以在 raven 的一个"集合"中拥有多种类型,我很喜欢它。但是现在我开始编写一些索引/查询,并且遇到了一个问题。
我没有意识到这意味着这些类型都将被视为相同的东西。我认为"集合"只是一个用于RavenDB Management Studio的字符串。所以。。。在这种情况下..
class Prototypes : { // ... }
进入具有标识模式项/原型/# 的"项目"集合
class Items : { // ... }
进入具有标识模式项的"项"集合/#
class Schemas : { // ... }
进入具有标识模式项/##/schemas/## 的"项"集合
所以如果我这样做...
var prototypes = RavenSession.Query<Prototype>().ToArray();
我也得到了所有的项和架构。有没有办法具体说明我想从索引/查询中返回的内容类型?
将它们分组到一个集合中的最初愿望只是为了保持整洁,而不是有很多不同的集合。我当时没有意识到这会发生,因为我相信对查询很重要的是类名,而不是集合名。
您应该只从该查询中获取Prototype
项。 向动态查询提供类型时,生成的索引已将结果筛选为该类型。 它使用Raven-Entity-Name
元数据进行过滤,这一切都在后台神奇地发生。 你不应该考虑太多。
您实际上是否从此查询中返回Items
和Schemas
类型? 你不应该这样。
顺便说一句 - 这些是实体非常奇怪的名称。 通常可以使用更具体的类,例如 Customer
或 BlogPost
. 拥有像Prototypes
、Items
、Schemas
这样的类似乎很奇怪,除非你正在构建一些非常通用的东西,并且这些与你的领域相关。