RavenDb生成文档密钥

RavenDb生成文档密钥,ravendb,Ravendb,我需要为文档的子对象生成Id。生成文档密钥的当前语法是什么 session.Advanced.Conventions.GenerateDocumentKey(文档)不再存在。我找到了documentSession.Advanced.DocumentStore.Conventions.GenerateDocumentKey方法,但它的签名很奇怪:我对默认的密钥生成算法没有意见,我只想传递一个对象并接收一个Id。GenerateDocumentKey的默认实现是获取类的“动态标记名”,并附加一个斜杠

我需要为文档的子对象生成Id。生成文档密钥的当前语法是什么


session.Advanced.Conventions.GenerateDocumentKey(文档)
不再存在。我找到了documentSession.Advanced.DocumentStore.Conventions.GenerateDocumentKey方法,但它的签名很奇怪:我对默认的密钥生成算法没有意见,我只想传递一个对象并接收一个Id。

GenerateDocumentKey的默认实现是获取类的“动态标记名”,并附加一个斜杠。例如,类
Foo
将变成
Foos/
,然后通过,这样就可以在客户端分配ID,而无需每次咨询服务器

如果您真的想要这种行为,您可以尝试自己使用HiLoKeyGenerator,但是您是否考虑过更简单的方法?我不知道您的模型是什么,但如果子对象完全由包含文档所有(应该是在同一文档中),您有几个更简单的选项:

  • 只需在集合中使用索引
  • 在文档上保留一个
    int NextChildThingId
    属性,并在每次添加子对象时递增该属性
  • 只需使用
    Guid
    ,尽管通过电话阅读、键入、查看、比较或与他人交谈都没有乐趣