Is it possible to change the default serialisation of C# poco\'s for documentDb? The id-property for instance seem to be required to be lower case, but the default serialisa
Here a couple ways to get lower-case or camel-case properties in your DocumentDB document:
Use [JsonProperty(PropertyName = "id")]
as you mentioned.
Change the C# property in the POCO to lower case.
Have your POCO extend Microsoft.Azure.Documents.Document
from the DocumentDB .NET Library, which has an Id property (that I believe uses [JsonProperty(PropertyName = "id")]
behind the scenes).
Instead of using the default serializer, you can use the Json.NET library to serialize using it's camel-case resolver. Mats Karlsson has a pretty good blog post on this here: http://www.matskarlsson.se/blog/serialize-net-objects-as-camelcase-json
Edit: JSON serializer settings is supported in the DocumentDB .NET SDK 1.16.0+. https://docs.microsoft.com/en-us/azure/cosmos-db/sql-api-sdk-dotnet
Currently you can't change the default serializer of DocumentDB, you can however serialize it using your own library or JSON.NET and store the JSON string to the collection by doing:
await client.CreateDocumentAsync(collectionLink, Resource.LoadFrom<Document>(stream));
where stream a stream to your json string (can be from a file, or from an in-memory string, etc). You can find more info on the internet archive's edition of my blog post, which used to reside here
Edit: JSON serializer settings is supported in the DocumentDB .NET SDK 1.16.0+. https://docs.microsoft.com/en-us/azure/cosmos-db/sql-api-sdk-dotnet