Domanda

Sto usando Solr e SolrNet per alcuni scenari semplici in un'applicazione ASP.NET MVC. Per uno a uno mappature, dove sto mappatura un singolo POCO a un documento, tutto funziona molto senza intoppi. Tuttavia, mi chiedo se è possibile mappare scenari più complessi come il seguente. In sostanza ho una classe di asta che contiene un bambino 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;} 
    }

Ovviamente posso mappare l'elemento dell'asta con gli attributi nel mio codice, ma mi chiedo come posso comprendere, diciamo, ItemName / ItemDescription / itemprice nel mio documento Solr. Ovviamente la speranza non è quello di appiattire il mio oggetto grafico. C'è un modo per raggiungere questo obiettivo?

È stato utile?

Soluzione

E 'attualmente un questione aperta (il che significa che si avere l'opportunità per la sua attuazione; -!)

In ogni caso vi consiglio appiattimento vostre classi, in questo modo è più esplicito che c'è un solo tavolo. Nelle parole del Solr wiki :

  

Solr fornisce una tabella. Salvataggio di un gruppo tabelle del database in un indice generalmente richiede denormalizing alcune delle tabelle. I tentativi di evitare denormalizing solito fallire.

Altri suggerimenti

Abbiamo risolto tale problema con [JsonIgnore] e semplice getter per creare oggetto raggruppato:

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; }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top