Я вижу какое-то странное поведение при сохранении в DocumentDB. Я начал сохранять документы, используя простой старый класс, который выглядел так:
public class Person
{
public string Name;
public int Age;
}
Я сохранил эти документы следующим образом:
var person = new Person { ... };
client.CreateDocumentAsync(myCollectionLink, person);
Это сработало нормально. Свойства были сохранены точно с именами в классе. Затем я понял, что мне нужен SelfLink документа, чтобы выполнять обновления и удаления. «Ах, — подумал я. "Я просто выведу из Document, вот так:
public class Person: Microsoft.Azure.Documents.Document
{
public string Name;
public int Age;
}
Однако, к моему большому удивлению, когда я внес это изменение, новые документы были созданы совершенно пустыми, за исключением свойства «id», назначенного самой DocumentDB.
Я перепроверил несколько раз. Наследование от документа предотвращает сохранение моих пользовательских свойств в документе...
... если я явно не украсил каждый из них [JsonProperty], например:
public class Person: Document
{
[JsonProperty(PropertyName="name")]
public string Name;
[JsonProperty(PropertyName="age")]
public int Age;
}
Затем он снова работает (конечно, используя новые, более подходящие для JSON имена свойств camelCase). И после извлечения объекты заполняются свойством SelfLink, которое мне нужно для обновлений и удалений. Все хорошо.
На мои вопросы...Почему это произошло? Я делаю что-то не так, производя от Document? Мы будем очень признательны за ваши отзывы.