在查询返回异构文档的索引时,处理结果集的最佳™/最广泛使用/最广泛接受的方式是什么?
一个明显的答案是将它们作为通用的基本类型加载,然后向上转换为更具体的类型,但这似乎不可扩展。
我可以看到这是相关的一个常见场景是在搜索中。
如果仔细观察,您会发现结果已经是POCO。raven 客户端根据其Raven-Entity-Name
元数据对它们进行补充。
当然,您可以使用通用的基本类型或接口。如果你有很多不相关的数据,你可以使用object
. 然后稍后在您的应用程序中,您可以过滤它们并适当地投射它们,或者按原样使用它们。
试试这个作为一个实验。存储三个独立的不相关实体类型的一些文档并将它们多映射回来。或者反对返回多种不同文档类型的任何索引。哎呀,即使Raven/DocumentsByEntityName
是工作室建造也应该这样做。像这样查询这个索引:
var results = session.Query<object>("Raven/DocumentsByEntityName");
(与往常一样,等待非陈旧的结果,ToList 等)
设置断点并查看返回的结果。它们确实都是正确的类型,它们只是不同的类型,具体取决于返回的文档。对他们做你想做的事。