我正在为一个新项目评估RavenDB.
如果我创建了100个实体,我会得到很棒的连续ID:
但是如果我构建一个新的DocumentStore实例(在App Restart之后)并尝试创建新的实体,我会得到像这样的奇怪的ID:
有帮助吗?
注意:我正在使用嵌入式服务器和ASP.NET MVC 3
这是设计 - 每当您创建DocumentStore实例时都会生成新的HiLo密钥,因此您看到的间隙是来自其他会话的未使用的ID.
你为什么要关心连续的ids?
这也可能是关于这个主题的好读物:http://groups.google.com/group/ravendb/browse_thread/thread/3dbcacbc8b366ff8/
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)