2014-10-08 56 views
0

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

session.Advanced.Conventions.GenerateDocumentKey(document)不存在了。我发现_documentSession.Advanced.DocumentStore.Conventions.GenerateDocumentKey方法,但它的'签名是奇怪的:我没有用默认的密钥生成算法,我只是想传递一个对象并收到一个Id。

回答

2

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

如果你真的想要这种行为,你可以尝试使用你自己的HiLoKeyGenerator,但你有没有考虑过更简单?我不知道你的模型是什么,但是如果孩子的事完全由包含文档资(这是应该的,是同一个文档中)有你有几个很容易的选择:

  1. 刚使用索引集合
  2. 内保持对文档和增量int NextChildThingId属性,每次添加一个ChildThing
  3. 只需使用一个Guid,但那些没有阅读的乐趣,类型看,比较,或说话通过电话给某人。