我正在为一个新项目评估RavenDB。
如果我创建100个实体,我会得到很好的连续ID:
但是,如果我构建一个新的DocumentStore实例(在App Restart之后)并尝试创建新实体,我会得到像这样的奇怪ID:
任何帮助?
注意:我正在使用嵌入式服务器和ASP.NET MVC 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的身份选项,但这不是你应该关心的事情。