2017-12-04 3 views
0

ich Benutzer ServiceStack Autoquery zum Laden von Informationen. Ich habe eine Klasse wie diese:ServiceStack AutoQuery - Überprüfen auf null in Nullable DateTime-Feld

public class QueryItem: QueryDb<Item> 
{ 
    public string Name { get; set; } 
    public DateTime? BirthdayNotEqualTo { get; set; } 
} 

Wie in der documentation geschrieben, sollte ich in der Lage sein, alle Einzelteile zu erhalten, die nicht null in der Geburtstags-Spalte wie diese sind:

QueryResponse<Item> item = jsonServiceClient.Get(new QueryItem { 
    BirthdayNotEqualTo = null 
}); 

Aber ich empfange alle Gegenstände, unabhängig vom obigen Null-Filter. Wie kann ich das ändern? Die Werte in der Datenbank sind korrekt auf null festgelegt.

+0

Können Sie bitte bearbeiten Sie Ihre Frage in der Dokumentation zu zitieren, wo Sie diese Annahme gemacht haben? – mythz

Antwort

2

Es ist nicht möglich, einen Wert null mit dem ServiceClient zu senden. Ein null Wert, wie default(DateTime?) bedeutet kein Wert, so dass es keine "Null-Filter" gesendet wird und Ihre Abfrage ist die gleiche und ununterscheidbar von einem leeren QueryItem DTO senden.

Sie müssten ein Custom AutoQuery Implementation oder ein Customizable Query wie verwenden:

[QueryDbField(Template = "{Field} IS NOT NULL", Field = "Birthday")] 
public bool? BirthdayIsNotNull { get; set; } 
Verwandte Themen