我们的项目有一个框架和一个自己的代码库,它实现了框架的实体。
这个想法也是在框架中有几个索引,它们将返回某些框架类型(如user)的所有继承的结果。
显然,Raven支持此功能的唯一方法(不在最高级别创建索引并手动添加地图)是通过覆盖Clr类型将所有对象存储在同一个集合中。但是,这意味着我们丢失了派生信息,无法对其进行查询。
一些样本:
class A {
public string Id {get; set; },
public string Name {get; set; }
}
class B : A { }
class C : A { }
class D : C { }
然后我想查询以下内容:
store.Query<IndexOfA>().Where(a => a.Name == "foo").As<A>().ToList();
并且仍然能够做到这一点;
store.Query<IndexOfC>().As<C>().ToList()
我的想法是在RavenDB中存储文档时添加一个将派生类和基类保存到元数据的约定,但我不知道如何解决这个问题,也无法找到有关该主题的任何文档。
有什么想法吗?
答案 0 :(得分:0)
您可以创建一个使用带有AddMapForAll<Base>
的多地图索引的索引,它将为每个派生类生成一个单独的条目。
然后,您可以使用该索引进行多态查询。