我目前正在尝试将Solrnet与我正在开发的一个项目集成在一起,我甚至无法让Solrnet从生成的POCO生成文档。下面是我正在使用的POCOs的一个示例Solrnet找不到SolrField属性
public class Person : ICustomInterface
{
[SolrField("text")]
public string ContactNumber { get; set; }
[SolrField("text")]
public string ContactFax { get; set; }
[SolrField("text")]
public string ContactEmail { get; set; }
[SolrField("text")]
public string FamilyName { get; set; }
[SolrField("text")]
public string GivenName { get; set; }
[SolrField("text")]
public string MiddleName { get; set; }
[SolrField("text")]
public string Title { get; set; }
[SolrField("text")]
public string Gender { get; set; }
[SolrField("text")]
public string PlaceOfBirth { get; set; }
[SolrField("text")]
public string CountryOfBirth { get; set; }
[SolrUniqueKey("id")]
public string Id { get; set; }
}
我在尝试使用以下代码尝试索引上述内容之前调用了init函数。
Startup.Init<Person>("http://localhost:8080/solr-4.1.0");
我然后调用以下命令尝试索引对象。
var solr = ServiceLocator.Current.GetInstance<ISolrOperations<Person>>();
solr.Add(mypoco);
solr.Commit();
'solr.Add(person)'的错误是:“Document is missing mandatory uniqueKey field:id”。看看正在发送的http请求,这是有道理的,请求的主体是:<add><doc /></add>
。
看来,没有领域得到拾起。进一步看,'AttributesMappingManager'返回0结果。方法在下面并评论我从'GetPropertiesWithAttribute'看到的结果。
var props = type.GetProperties(BindingFlags.Instance | BindingFlags.Public); //returns properties correctly
var kvAttrs = props.Select(prop => new KeyValuePair<PropertyInfo, T[]>(prop, type.GetCustomAttributes<T>())); // correct number of keys of properties with Solrnet attributes, but values are empty
var propsAttrs = kvAttrs.Where(kv => kv.Value.Length > 0); // 0 results
return propsAttrs; // 0 results
我试图打破这一点,到测试项目,并仍然得到同样的问题。我尝试过和没有界面,仍然没有运气。我可能会错过真的简单,但很想知道它是什么。
注:我使用的是最新版本的Solrnet从github repository
更新 测试“SampleSolrApp”的解决方案,固定了一些引用(在“HomeController.cs”找不到SolrNet.DSL ,SolrNet.DSL ref似乎缺少,从编译的github repo中添加了引用),sample似乎正确初始化,通过Application_Start上的AddInitialDocuments()
方法发布'exampledocs'。然而,在我收到错误之后不久,“这个给定的密钥不在字典中”。在'HtmlHelperMapperExtensions.cs'中。 'Product'对象确实具有正确的属性,映射器正在查找字段名称,但无法找到任何字段(在这种情况下为'cat')。这匹配我遇到的问题,因为它没有构建solr的有效http请求,因为它似乎无法找到SolrField属性。
去测试另一台PC上的样本,看看这个问题是否与我的开发环境有关。任何意见或建议,将不胜感激。
更新2 在另一个开发环境中测试,我得到相同的错误。因此,即使在示例中,GetCustomAttributes
扩展方法似乎也没有返回pocos 上的属性。我正在VS 2012上运行示例(.net 4.5,示例项目中的目标为3.5),Win7机器上的IIS Express。希望有人能够指引我进一步调查的正确方向。
干杯的反应,我将看看获得样品运行明天,希望它揭示了什么我做错了一些轻。 – 2013-04-07 08:28:46
感谢您对'copyField'的建议,已经派上用场了,纯粹是自己造成的问题。谢谢你的帮助 :) – 2013-04-10 01:52:36