2016-01-17 4 views
2

Я играл с лазурным документом Db и сталкивался с проблемой или довольно сбивал с толку идентификаторы. Я знаю, что DocumentDb генерирует «нижний регистр» «id» для каждого документа, это хорошо со мной, но я не могу понять, как получить этот «id» при использовании .net-клиента. мой код выглядит нижеAzure DocumentDb id

public class Company 
    { 
     public Guid Id { get; set; } // this somehow does not get mapped to the "id" in the document. 
     public string Name { get; set; } 
     public string Address { get; set; } 

    } 

так, когда я запрос как

client.CreateDocumentQuery<Company>(collection.DocumentsLink).ToList(); 

свойство ID не отображается. Я думаю, что я не понял концепцию ID в документе db и как он правильно отображает ваши сущности. Любая помощь очень ценится.

+0

Основной вопрос, свойство id отображается, когда ваша компания изменяет идентификатор вместо Id? нет? поэтому, это не ваш Идентификатор. Это идентификатор базы данных DocumentDb. –

+0

Я попытался переименовать его в нижний регистр, он все еще не возвращает его. –

+0

Я полагаю, что ... позволяет проверить, что случилось. не могли бы вы изменить вопрос с помощью исходного кода? –

ответ

3

Попробуйте изменить компанию, чтобы компания

[JsonProperty("id")] 
    public String Id { get; set; } 

это загрузит documentdb генерируемого Id, в поле идентификатора.

Дайте мне знать, если это не работает.

+1

Это работает. Но также означает, что я должен изменить свою модель, чтобы адаптироваться к уровню сохранения. –

+0

Вам все равно нужно сменить модель, так как она сгенерирована DocumentDB, у вас не может быть сеттер для нее. – Darren

+0

@ Darren Nope. 'Id' генерируется, когда он не предоставляется. Всегда можно указать «id». Просто нужно убедиться, что корпус правильно установлен. – gldraphael

Смежные вопросы