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

时间:2011-05-18 08:16:58

标签: c# .net ravendb

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

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

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

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

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

任何帮助?

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

3 个答案:

答案 0 :(得分:7)

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

为什么要关注连续的ID?

这也可以很好地阅读这个主题:http://groups.google.com/group/ravendb/browse_thread/thread/3dbcacbc8b366ff8/

答案 1 :(得分:7)

来自RavenDb文档,you're after the Identity strategy

  

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

例如

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

session.Store(foo);
session.SaveChanges();

答案 2 :(得分:3)

你可能想看一下RavenDB的身份选项,但这不是你应该关心的事情。