C# 索引基类ravendb的所有派生类

C# 索引基类ravendb的所有派生类,c#,ravendb,C#,Ravendb,我们的项目有一个框架和自己的代码库,它实现了框架的实体 其想法也是在框架中有几个索引,这些索引将返回某些框架类型(如user)的所有继承结果 显然,Raven支持此功能的唯一方法(无需在最高级别上创建索引并手动添加映射)是通过覆盖Clr类型将所有对象存储在同一集合中。但是,这意味着我们将丢失派生信息,无法对其进行查询 一些样本: class A { public string Id {get; set; }, public string Name {get; set; }

我们的项目有一个框架和自己的代码库,它实现了框架的实体

其想法也是在框架中有几个索引,这些索引将返回某些框架类型(如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().Where(a=>a.Name==“foo”).As().ToList();
并且仍然能够做到这一点

store.Query<IndexOfC>().As<C>().ToList()
store.Query().As().ToList())
我的想法是在RavenDB中存储文档时,添加一个将派生类和基类都保存到元数据的约定,但我不知道如何执行此操作,也找不到有关此主题的任何文档


有什么想法吗?

您可以创建一个索引,该索引使用带有
AddMapForAll
的多映射索引,它将为每个派生类生成一个单独的条目。
然后,您可以使用该索引进行多态查询。

您可以创建一个索引,该索引使用带有
AddMapForAll
的多映射索引,它将为每个派生类生成一个单独的条目。
然后,您可以使用该索引进行多态查询。

谢谢您的回答。这与我们所寻找的很接近,但是因为我们有多个项目,所以我们必须创建一个扩展来搜索所有程序集中的派生类。也许是想在Raven源代码中添加一个支持此功能的重载方法?答案在官方文档中缺少一个解释它是如何起作用的。谢谢你的回答。这与我们所寻找的很接近,但是因为我们有多个项目,所以我们必须创建一个扩展来搜索所有程序集中的派生类。也许有一个想法可以在Raven源代码中添加一个重载方法来支持这一点?答案是官方文档中缺少一个解释它是如何起作用的。