4

我开始玩 RavenDB(到目前为止看起来真的很棒)。但是我一直在尝试以下操作。

我像这样存储一个新文档

Product p = new Product() { Title = "My Fancy Product" };
RavenSession.Store(p);

现在我想获取新存储文档的 ID。谁能做到这一点?只是p.Id在商店似乎不起作用后才能访问...

提前致谢!

4

1 回答 1

10

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

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

Product p = new Product() { Title = "My Fancy Product" };
RavenSession.Store(p);
string id = p.Id;

更多信息可以在documentationDocument IDs部分)中找到:

在上面的示例中,我们有一个 BlogPost 的字符串 Id 属性,并将其留空。正是此属性将用作此文档的“主键”。请注意 RavenDB 如何根据我们将在稍后讨论的默认约定为我们生成一个 ID“BlogPosts/1”。

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

于 2013-09-06T16:27:58.050 回答