這AutoQuery test顯示自動查詢支持請求DTO有如圖的這種自動查詢服務自定義別名域:
[DataContract]
[Route("/rockstars")]
public class QueryRockstars : QueryBase<Rockstar>
{
[DataMember(Name = "first_name")]
public string FirstName { get; set; }
}
可與該測試被稱爲:
var request = new QueryRockstars { FirstName = "Jimi" };
//QueryString used:
Assert.That(request.ToGetUrl(),
Is.EqualTo("/rockstars?first_name=Jimi"));
var response = client.Get(request);
Assert.That(response.Results.Count, Is.EqualTo(1));
Assert.That(response.Results[0].FirstName, Is.EqualTo("Jimi"));
ServiceStack也已更新查看任何匹配的基礎表上的任何別名,以便現在可以在查詢表上使用字段約定,例如:
[Route("/search")]
public class QueryPerson : QueryBase<Person> {}
[DataContract]
public class Person
{
[DataMember]
public int Id { get; set; }
[DataMember(Name = "first_name")]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }
}
var response = "http://example.org/search"
.AddQueryParam("first_name", "Jimi")
.GetJsonFromUrl()
.FromJson<QueryResponse<Person>>();
response.PrintDump();
它還支持使用JsConfig.EmitLowercaseUnderscoreNames
慣例,e.g隱含映射:
JsConfig.EmitLowercaseUnderscoreNames = true;
var response = "http://example.org/search"
.AddQueryParam("last_name", "Hendrix")
.GetJsonFromUrl()
.FromJson<QueryResponse<Person>>();
這些變化都可以從v4.0.41 +這就是現在available on MyGet。