我正在使用RavenDB,我正在努力做点什么。我有一个基类型,Principal,从中派生出两个类:User和ApplicationInstance。在我的应用程序中,必须经常创建和存储User和ApplicationInstance的实例。但问题是,我还需要能够一次查询存储在数据库中的所有Principal对象,确定给定的Principal是User还是ApplicationInstance,然后查询整个User或ApplicationInstance对象。
我该怎么做?
答案 0 :(得分:2)
您可以定义Multi Map Index用作User
和ApplicationInstance
集合的来源。
如果使用C#代码定义索引(通过实施AbstractMultiMapIndexCreationTask<>
),则必须调用AddMap
两次以实现该目标(如上面的博客文章链接所示)
如果您使用Raven Studio定义索引,只需单击添加地图按钮,您将获得一个新的文本区域,允许您定义其他地图。
但请注意,两个映射的输出结构必须具有相同的属性(几乎与在SQL中使用UNION一样)。
答案 1 :(得分:1)
你想做什么?如果最终结果是查询所有Principal,然后加载整个User或AppInstance,为什么不直接查询所有用户或所有AppInstances?
Raven不会存储基类;它只会存储派生类型最多的(User或AppInstance,在您的情况下)。因此,您将拥有一组用户和一组AppInstances。
如果您确实需要同时查询两者,则可以使用Multi Map indexes。您还可以更改实体名称并将其存储在单个Principal集合中。
但是如果不知道你想要做什么,就很难推荐一个解决方案。 解释您正在尝试做什么,我们会告诉您到达目的地的正确方法。