Sitecore 7 LinQ POCO类-如何从树列表获取数据?
我刚开始使用SOLR与Sitecore 7的集成。我设法遵循一些指南并构建了一个“POCO”类(继承自SearchResultItem),该类允许我执行LINQ查询和搜索数据,如下面的示例所示:Sitecore 7 LinQ POCO类-如何从树列表获取数据?,sitecore,sitecore7,Sitecore,Sitecore7,我刚开始使用SOLR与Sitecore 7的集成。我设法遵循一些指南并构建了一个“POCO”类(继承自SearchResultItem),该类允许我执行LINQ查询和搜索数据,如下面的示例所示: 公共类MySearchItem:SearchResultItem { [索引字段(“文本字段”)] 公共字符串文本字段 { 得到; 设置 } [IndexField(“Drop Link”)] 公共身份证投递 { 得到; 设置 } [索引字段(“树列表”)] 公共可数树列表 { 得到; 设置 } }
公共类MySearchItem:SearchResultItem
{
[索引字段(“文本字段”)]
公共字符串文本字段
{
得到;
设置
}
[IndexField(“Drop Link”)]
公共身份证投递
{
得到;
设置
}
[索引字段(“树列表”)]
公共可数树列表
{
得到;
设置
}
}
当我使用下面的代码执行查询时,我观察到结果项中的TextField和DropLink属性被正确填充,分别使用TextField和DropLink的内容和ID。但是,正在将TreeList属性检索为null。我已经检查了明显的提示,并确保提示正确反映了sitecore模板中的字段名,并且根据“项目存储桶和搜索的开发人员指南”,sitecore 7 IEnumerable文档自动受支持
var index=ContentSearchManager.GetIndex(“sitecore\u master\u index”);
使用(var context=index.CreateSearchContext())
{
var results=context.GetQueryable();
结果=结果。其中(item=>item.TemplateName==“自定义Sitecore模板”);
}
该字段位于索引器中,因为调用了results.First()[“TreeList”]似乎显示了我要查找的数据。这是读取数据的正确方法吗
此外,在我的“POCO”类中是否有可能加入其他类型?假设我想查询树列表中某个项的属性。我将如何着手实施这一点?我是否正确地假设sitecore需要我的树列表类型的TypeConverter来正确解析除ID以外的类型中的树列表,以便执行以下操作
[IndexField(“树列表”)]
公共可数树列表
{
得到;
设置
}
如能提供任何帮助/指导以了解此行为,将不胜感激
谢谢
更新
我已经按照这篇文章中的建议将此作为错误报告提交。如果有人遇到此问题,他们会确认这是一个问题,并建议以下解决方法:
将以下行添加到Sitecore.ContentSearch.Solr.Indexes.config文件的部分:
<typeMatch typeName="guidCollection" type="System.Collections.Generic.IEnumerable`1[System.Guid]" fieldNameFormat="{0}_sm" multiValued="true" settingType="Sitecore.ContentSearch.SolrProvider.SolrSearchFieldConfiguration, Sitecore.ContentSearch.SolrProvider" />
<typeMatch typeName="stringCollection" type="System.Collections.Generic.IEnumerable`1[System.String]" fieldNameFormat="{0}_sm" multiValued="true" settingType="Sitecore.ContentSearch.SolrProvider.SolrSearchFieldConfiguration, Sitecore.ContentSearch.SolrProvider" />
<typeMatch typeName="intCollection" type="System.Collections.Generic.IEnumerable`1[System.Int32]" fieldNameFormat="{0}_im" multiValued="true" settingType="Sitecore.ContentSearch.SolrProvider.SolrSearchFieldConfiguration, Sitecore.ContentSearch.SolrProvider" />
希望这有帮助 我也遇到了同样的问题,通过检查配置文件Sitecore.ContentSearch.Solr.Indexes.config,似乎该类型没有映射到Solr提供程序 这确实很奇怪,因为在文档《项目存储桶和搜索的开发人员指南》中,它明确指出,开箱即用应该能够映射
IEnumerable
的类型
请您尝试将多重列表字段的类型从
IEnumerable
改为List
,并检查这是否解决了您的问题?立即生效!谢谢。您应该将此作为文档或配置错误报告给Sitecore支持