我应该如何使用RavenDB查询中的异构文档?

时间:2013-01-09 11:03:46

标签: c# .net linq ravendb

当查询返回异构文档的索引时,使用结果集的最佳/最广泛使用/最广泛接受的方式是什么?

一个明显的答案是将它们作为公共基类型加载,然后向上转换为更具体的类型,但这似乎不可扩展。

我可以看到这是相关的常见情况是搜索。

1 个答案:

答案 0 :(得分:1)

仔细观察,您会发现结果已经 POCO。它们由乌鸦客户端根据其Raven-Entity-Name元数据进行水合。

您可以使用通用基本类型或界面。如果您有大量不相关的数据,则可以使用object。然后在您的应用程序中,您可以过滤它们并适当地投射它们,或者只是按原样使用它们。

尝试将其作为实验。存储三个独立的不相关实体类型的几个文档,并将它们重新映射回来。或者反对任何返回多种不同文档类型的索引。哎呀,即使工作室构建的Raven/DocumentsByEntityName也应该这样做。像这样查询这个索引:

var results = session.Query<object>("Raven/DocumentsByEntityName");

(通常情况下,等待非陈旧的结果,ToList等)

设置断点并查看您获得的结果。它们确实都是正确的类型,它们只是不同的类型,具体取决于返回的文档。做你想做的事。