2013-03-14 6 views
1

Предположим, у меня есть следующая структура объекта, который я пытаюсь сохранить в хранилище документов RavenDB v2.0, используя API-интерфейс на стороне клиента.Как автоматически присваивать идентификатор сохраненным объектам?

public class Instance 
    { 
     public string ID { get; set; } 
     public string Name { get; set; } 
     public string Content { get; set; } 
    } 

Если я создаю 10-20 экземпляров, и я хочу сохранить идентификатор объекта для каждого объекта соответственно. Что я вижу в документации на сайте, так это то, что вы можете получить идентификатор объекта после вызова метода session.SaveChanges(), но это будет означать, что мне нужно вызвать этот метод для каждого элемента объекта, который у меня есть.

Что лучше всего использовать здесь? Есть ли способ, которым клиентский API автоматически сохранил идентификатор объекта в поле класса сущности (есть ли атрибут для этого, возможно)?

+0

Чтобы уточнить ответ Фицхака - измените свою собственность на 'Id' вместо' ID', и она заполняется после 'Store'. Вам не нужно ждать «SaveChanges». –

+0

Я сделал .. Я создал 'public'' string' свойство с именем 'Id' с' {get; set;} ', но он остается' null' после 'Store'. – Adrian

+0

Если вы не пытаетесь установить его самостоятельно, он должен быть заполнен. Отправьте образец, если вам нужно. –

ответ

2

С соглашениями по умолчанию RavenDB устанавливает значение ID после вызова session.Store(item), используя алгоритм HiLo, чтобы генерировать идентификатор на клиенте, не дойдя до сервера для каждого присвоения идентификатора. Идентификатор доступен в свойстве под названием «Id», вы можете настроить просмотр свойства property named.

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