我目前正在嘗試將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