2016-07-01 7 views
3

Wir migrieren unser Nest 1,0 bis NEST 2.0 In früheren Version wurden wir mit einer Abfrage wie folgt:Was ist die Alternative zu QueryDescriptor Nest 2.x

container = new QueryContainer(); 
        container = new QueryDescriptor<BaseModel>().Range(qs => qs.OnField(f => f.PublishedDate).LowerOrEquals(TimeZoneInfo.ConvertTimeToUtc(DateTime.Now))); 

        if (!string.IsNullOrEmpty(contentType) && !contentType.ToLower().Equals("all")) 
        { 
         container &= new QueryDescriptor<BaseModel>().QueryString(qs => qs.OnFields(f => f.ContentType).Query(contentType)); 
        } 

In NEST 2.0 QueryDescriptor Klasse nicht verfügbar ist, Wie können wir ähnliche Aktionen in NEST 2.0 durchführen?

Antwort

9

Nehmen einige Änderungen an Ihrem Code, und Sie werden gut:

  1. ändern QueryDescriptor<>-QueryContainerDescriptor
  2. Verwenden DateRange(..) statt Range(..)
  3. OnFields(..) Methoden verändert wurden, um Fields(..) rundum
  4. Schließlich , ersetzen LowerOrEquals(..) durch LessThanOrEquals(..)

Etwas wie:

container = new QueryContainer(); 
container = new QueryContainerDescriptor<BaseModel>().DateRange(qs => qs.Field(f => f.PublishedDate).LessThanOrEquals(TimeZoneInfo.ConvertTimeToUtc(DateTime.Now))); 

if (!string.IsNullOrEmpty(contentType) && !contentType.ToLower().Equals("all")) 
{ 
    container &= new QueryDescriptor<BaseModel>().QueryString(qs => qs.OnFields(f => f.ContentType).Query(contentType)); 
} 

Hoffe, es hilft.

Verwandte Themen