RavenDB获取新存储文件的ID

Dän*_*änu 4 c# ravendb

我开始玩RavenDB(到目前为止看起来真的很棒).但是我不得不尝试以下方法.

我存储了一个像这样的新文档

Product p = new Product() { Title = "My Fancy Product" };
RavenSession.Store(p);
Run Code Online (Sandbox Code Playgroud)

现在我想获得新存储文档的Id.谁能做到这一点?只是p.Id在商店似乎没有工作后访问...

提前致谢!

Dar*_*rov 10

类的Id属性Product必须是类型string而不是整数.

然后,您将能够在操作后检索自动生成的ID:

Product p = new Product() { Title = "My Fancy Product" };
RavenSession.Store(p);
string id = p.Id;
Run Code Online (Sandbox Code Playgroud)

更多信息可以在documentation(Document IDs部分)中找到:

在上面的示例中,我们为BlogPost提供了一个字符串Id属性,并将其留空.此属性将用作此文档的"主键".请注意RavenDB如何为我们生成一个ID,"BlogPosts/1",基于我们将在一秒钟内讨论的默认约定.

如果文档上没有Id属性,RavenDB仍将生成唯一ID,但只能通过调用session.Advanced.GetDocumentId(object)来检索它.换句话说,拥有Id属性是完全可选的,因此只有在需要更容易访问此信息时才能显式定义此类属性.