Как получить последовательный идентификатор с генератором идентификаторов RavenDb по умолчанию - PullRequest
6 голосов
/ 18 мая 2011

Я оцениваю RavenDB для нового проекта.

Если я создаю 100 сущностей, я получаю отличные последовательные идентификаторы, такие как:

  • posts / 1
  • posts/ 2
  • posts / 3
  • ...
  • posts / 100

Но если я создаю новый экземпляр DocumentStore (после перезапуска приложения)) и попробуйте создать новые объекты, я получил странные идентификаторы, такие как:

  • posts / 1025
  • posts / 1026
  • posts / 1027

Любая помощь?

Примечание: я использую Embedded Server с ASP.NET MVC 3

Ответы [ 3 ]

7 голосов
/ 25 мая 2012

Из документов RavenDb вы придерживаетесь стратегии идентификации .

RavenDB также поддерживает понятие идентичности, например, если вам нужно Идентификаторы должны быть последовательными. Создав свойство идентификатора строки в вашем и установив его в значение, заканчивающееся косой чертой (/), вы можете попросите RavenDB использовать это в качестве ключевого параметра для вашей сущности. Этот префикс сопровождаемый следующим доступным целочисленным идентификатором для этого будет вашим юридическим лицом Идентификатор после вызова SaveChanges ().

например.

var foo = new Foo();
foo.Id = "foo/"; // <-- this will use the Identity strategy, not HiLo.

session.Store(foo);
session.SaveChanges();
7 голосов
/ 18 мая 2011

Это сделано специально - новые ключи HiLo генерируются всякий раз, когда вы создаете экземпляр DocumentStore, поэтому наблюдаемые вами пробелы - это неиспользуемые идентификаторы из другого сеанса.

Почему вы заботитесь о последовательных идентификаторах?

Это также может быть хорошим чтением по теме: http://groups.google.com/group/ravendb/browse_thread/thread/3dbcacbc8b366ff8/

3 голосов
/ 18 мая 2011

Возможно, вы захотите взглянуть на опцию идентификации для RavenDB, но на самом деле это не то, о чем вы должны заботиться.

...