我在ASP.NET MVC应用程序中使用Solr和SolrNet来处理一些简单的场景。对于一对一映射,我将单个POCO映射到文档,一切都非常顺利进行。但是,我想知道是否可以映射更复杂的场景,如下所示。基本上我有一个Auction类,其中包含一个子AuctionItem
public class Auction
{
public virtual int ID { get; set; }
public virtual string Name { get; set; }
public virtual AuctionItem {get;set;}
public virtual DateTime StartDate { get; set; }
public virtual DateTime EndDate { get; set; }
}
public class AuctionItem
{
public virtual int ID { get; set; }
public virtual string ItemName{ get; set; }
public virtual string ItemDescription{ get; set; }
public virtual Double ItemPrice{get;set;}
}
显然我可以在我的代码中使用属性映射拍卖物品,但我想知道如何在我的Solr文档中包含ItemName / ItemDescription / ItemPrice。显然,这里的希望不是压扁我的对象图。有没有办法实现这个目标?
答案 0 :(得分:3)
我们使用[JsonIgnore]和简单的getter方法创建了分组对象,从而解决了此类问题:
public class Company
{
/// <summary>
/// Company location
/// </summary>
public Location Location => new Location(Latitude, Longitude);
// hide from json, but retrieve from solr
[JsonIgnore, SolrField("latlng_0_coordinate")]
public double Latitude { get; set; }
// hide from json, but retrieve from solr
[JsonIgnore, SolrField("latlng_1_coordinate")]
public double Longitude { get; set; }
}
答案 1 :(得分:1)
目前是open issue(这意味着你有机会实施它!; - )
无论如何,我建议展平你的课程,这样就更明确了只有一张桌子。用Solr wiki:
的话来说Solr提供一个表格。在索引中存储集合数据库表通常需要对某些表进行非规范化。试图避免非规范化通常会失败。