如何使用RavenDb默认id生成器获取连续id

Yoa*_*. B 6 .net c# ravendb

我正在为一个新项目评估RavenDB.

如果我创建了100个实体,我会得到很棒的连续ID:

  • 文章/ 1
  • 文章/ 2
  • 文章/ 3
  • ...
  • 文章/ 100

但是如果我构建一个新的DocumentStore实例(在App Restart之后)并尝试创建新的实体,我会得到像这样的奇怪的ID:

  • 文章/ 1025
  • 文章/ 1026
  • 文章/ 1027

有帮助吗?

注意:我正在使用嵌入式服务器和ASP.NET MVC 3

syn*_*hko 7

这是设计 - 每当您创建DocumentStore实例时都会生成新的HiLo密钥,因此您看到的间隙是来自其他会话的未使用的ID.

你为什么要关心连续的ids?

这也可能是关于这个主题的好读物:http://groups.google.com/group/ravendb/browse_thread/thread/3dbcacbc8b366ff8/


Pur*_*ome 7

从RavenDb文档中,您将遵循身份策略.

RavenDB还支持Identity的概念,例如,如果您需要ID是连续的.通过在实体中创建字符串Id属性,并将其设置为以斜杠(/)结尾的值,您可以告诉RavenDB将其用作实体的关键perfix.在调用SaveChanges()之后,该前缀后跟下一个可用的整数ID将是您实体的ID.

例如.

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

session.Store(foo);
session.SaveChanges();
Run Code Online (Sandbox Code Playgroud)