2016-05-27 13 views
10

Biorąc pod uwagę dokument { "userName": "user1" } przechowywany w kolekcji użytkownika, a po User klasa:Jak poinformować pakiet SDK programu DocumentDB, aby używał polecenia camelCase podczas kwerendy linq?

public class User 
{ 
     public string Id { get; set; } 
     public string UserName { get; set; } 
} 

z następującymi ustawieniami Json.NET:

JsonConvert.DefaultSettings =() => 
{ 
    return new JsonSerializerSettings 
    { 
     ContractResolver = new CamelCasePropertyNamesContractResolver(), 
    }; 
}; 

Podczas kwerendy z Linq jako takie:

var t = _client.CreateDocumentQuery<User>(_collection.SelfLink) 
      .Where(u => u.UserName == "user1").AsDocumentQuery().ExecuteNextAsync(); 

t.Wait(); 

var users = t.Result; 
var user = users.FirstOrDefault(); 

user ma wartość null. Zmiana dokumentu na paskarstwo lub POCO w celu użycia obudowy wielbłąda rozwiązuje problem. Oczywiście nie chcę żadnych z nich, ponieważ chcę, aby moje obiekty JSON i obiekty C# były "standaryzowane".

Jak mogę powiedzieć SDK DocumentDB, aby odwzorować nazwy właściwości obiektu za pomocą obudowy wielbłąda, podobnie jak JSON.net?

+0

Czy [ta odpowiedź] (http://stackoverflow.com/a/25879197/272109) rozwiązuje problem? Nie jest to dokładnie duplikat, ale sądzę, że opublikowana odpowiedź obejmuje to, czego szukasz. –

Odpowiedz

15

Dostawca DocumentDB LINQ nie odbiera JsonConvert.DefaultSettings. Ogólnie możesz użyć DefaultSettings do kontroli camelCase, ale dla tych właściwości, które chcesz użyć w LINQ Gdzie klauzula musi mieć nazwę jawnie ustawioną za pomocą atrybutu JsonProperty na twoim DTO.

public class User 
{ 
    public string Id { get; set; } 

    [JsonProperty("userName")] 
    public string UserName { get; set; } 
} 

Mimo że jest nieco nudny i stanowi dobre źródło błędów, wydaje się, że jest to obecnie jedyna opcja.

+3

Wow, to bummer! –

+0

dzięki za odpowiedź, to zabijało moje pytania – vip32

+0

dzięki za odpowiedź! to też zabijało moje pytania. Na razie przełączam się z wyrażeń LINQ na SQL. –

Powiązane problemy