Question

J'utilise Solr et SolrNet pour certains scénarios simples dans une application ASP.NET MVC. Pour un à un mappage, où je suis cartographie un seul POCO à un document, tout fonctionne très en douceur. Cependant, je me demande s'il est possible de cartographier des scénarios plus complexes comme ce qui suit. Essentiellement, j'ai une classe d'enchères qui contient un enfant 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;} 
    }

Il est évident que je peux mapper l'objet d'enchères avec des attributs dans mon code, mais je me demande comment je peux comprendre, par exemple, NomRubrique / ItemDescription / ItemPrice dans mon document Solr. Il est évident que l'espoir est ici de ne pas aplatir mon graphe d'objet. Y at-il un moyen d'y parvenir?

Était-ce utile?

La solution

Il est actuellement question ouverte (ce qui signifie que ont la possibilité de le mettre en œuvre; -)

En tout cas je recommande aplatir vos classes, de cette façon, il est plus explicite qu'il n'y a qu'une seule table. Pour reprendre les mots du Solr wiki :

  

Solr fournit une table. Enregistrement d'un tables de base de données établie dans un index nécessite généralement dénormaliser certaines des tables. Les tentatives pour éviter dénormaliser habituellement échec.

Autres conseils

Nous avons résolu ce problème avec [JsonIgnore] et getter simple pour créer un objet groupé:

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; }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top