在RavenDb documentation我可以获取文件ID,如果我传入我的对象:
string orderId = session.Advanced.GetDocumentId(order); // "orders/1"
但我想要的是只传入类型和对象的id值,如:
string orderId = session.Advanced.GetDocumentId(typeof(Order), 1); // "orders/1"
这一切都可能吗?如果是这样,怎么样?我试图避免在删除它之前将对象拉出数据库。我有RavenDb生成集合名称所以我不想对名称做任何假设。
答案 0 :(得分:3)
您可以使用FindFullDocumentKeyFromNonStringIdentifier
方法从文档商店的约定中获取此内容。
这是一个简单的扩展方法,可以提供帮助:
public static string GetStringIdFor<T>(this IDocumentStore documentStore, int id)
{
return documentStore.Conventions.FindFullDocumentKeyFromNonStringIdentifier(id, typeof(T), false);
}
现在你可以这样做:
string orderId = documentStore.GetStringIdFor<Order>(1);
或者,如果您在代码中没有碰巧访问文档存储区,则可以从会话中获取它:
string orderId = session.Advanced.DocumentStore.GetStringIdFor<Order>(1);