RavenDB索引创建

RavenDB索引创建,ravendb,Ravendb,我正在努力学习编写索引。例如,我在管理工具中执行了以下操作,效果良好: 来自docs.ravenjabjects中的文档 来自文档[“加载程序”][“表格”]中的表格,其中表格[“@Type”]=“联系人信息” 从(IEnumerable)表[“行”]中的行,其中Convert.ToInt32(行[“@Index”])>1 选择新{} 我使用代码尝试了相同的语法,但出现了一个错误: DocStore.DatabaseCommands.PutIndex(“JIndex”,新Raven.Clien

我正在努力学习编写索引。例如,我在管理工具中执行了以下操作,效果良好:

来自docs.ravenjabjects中的文档
来自文档[“加载程序”][“表格”]中的表格,其中表格[“@Type”]=“联系人信息”
从(IEnumerable)表[“行”]中的行,其中Convert.ToInt32(行[“@Index”])>1
选择新{}
我使用代码尝试了相同的语法,但出现了一个错误:

DocStore.DatabaseCommands.PutIndex(“JIndex”,新Raven.Client.IndexDefinitionBuilder)
{
Map=docs=>来自文档中的文档
来自文档[“加载程序”][“表格”]中的表格,其中表格[“@Type”]=“联系人信息”
从(IEnumerable)表[“行”]中的行,其中Convert.ToInt32(行[“@Index”])>1
选择新{}
});
错误:

无法将带[]的索引应用于“Raven.Json.Linq.RavenJToken”类型的表达式


代码中正确的语法应该是什么?谢谢你,至少对我来说,你的索引毫无意义。请看一下这里,看看如何使用静态索引:我想我真正的观察是,当在管理工具中编写查询的一部分时,我可以在RavenJObject上使用索引,但当查询是使用AbstractIndexCreationTask或上述方法创建的索引的一部分时,我不能使用相同的语法。Alex,原因是:当您在管理工具中创建查询时,代码正是将在服务器上动态编译和执行的代码。相反,当您使用linq语法在客户机上创建索引时,Raven尝试将linq表达式树转换为可以通过HTTP发送到服务器的字符串。这就是错误发生的地方。但是,您也应该能够在客户机上编写与管理工具中相同的索引,但只有在将map函数作为原始字符串提供时才能这样做。如果有帮助请告诉我,丹尼尔。谢谢你的回复。我发现了一个示例,其中用户将映射声明为原始字符串(正如您所建议的),并且按照他的示例,我能够在客户机上成功编译索引。