2016-05-27 18 views
10

Kullanıcı koleksiyonunda saklanan belge { "userName": "user1" } düşünüldüğünde ve aşağıdaki User sınıfı: Aşağıdaki JSON.net ayarlarıylaDocumentDB SDK'ya linq sorgusu sırasında camelCase'i nasıl kullanması gerekir?

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

:

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

ben gibi Linq ile sorgulamak:

user boş. Belgeyi pascal bir muhafazaya ya da POCO'nun bir deve muhafazasına sahip olacak şekilde değiştirilmesi sorunu çözer. Tabii ki JSON nesnelerini ve C# nesnelerini "standartlaştırılmış" olmasını istediğimden hiçbirini istemiyorum.

DocumentDB SDK'ya, nesnemin özellik adlarını JSON.net gibi benzer deve kasasını kullanarak eşleştirmesini nasıl söyleyebilirim?

+0

[Bu yanıt] (http://stackoverflow.com/a/25879197/272109) sorununuzu çözüyor mu? Bu tam olarak yinelenen bir soru değil, ama yayınlanan cevabın aradığınızı içerdiğini düşünüyorum. –

cevap

15

DocumentDB LINQ sağlayıcısı JsonConvert.DefaultSettings'i almaz. Genelde, camelCase'i kontrol etmek için DefaultSettings'i kullanabilirsiniz, ancak LINQ'da kullanmak istediğiniz bu özellikler için, yan tümce, DTO'nuzdaki JsonProperty özniteliğini kullanarak açıkça belirlenmiş bir isme sahip olmalıdır.

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

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

Hatalar için biraz sıkıcı ve iyi bir kaynak olsa da, şu an için tek seçeneğiniz gibi görünüyor.

+3

Vay, bu bir bummer! –

+0

cevabınız için teşekkürler, bu yanıtlarım için – vip32

+0

sorgularımı öldürüyordu! Bu benim de sorgularımı öldürüyordu. Şimdilik LINQ ifadelerinden SQL'e geçiyorum. –

İlgili konular