【发布时间】:2018-04-16 13:51:55
【问题描述】:
我目前正在为应该是微不足道的事情而苦苦挣扎,也许确实如此,但我找不到合适的解决方案。
我的问题源于 RavenDB 默认 ID 结构。假设我们使用 HiLo 算法创建一个人,我们将获得我们的第一个文档:
people/A-1
相关的集合“人物”现在有一个成员。
我的问题其实很简单:设计一个普通的RESTful方法来获取一个人:
GET people/:id
并使用示例文档 ID 调用它,我的调用将变为:
GET people/people/A-1
这显然不起作用,因为斜杠字符是路由分隔符,但对于 RavenDB,它也是实体 ID 的一部分。
我尝试使用不同的分隔符(更改我的客户端代码上的约定),以便获得像 people#A-1 这样的 ID,但 RavenDB Studio 无法识别:如果我尝试通过以下方式将两个文档“链接”在一起他们的 ID,只有标准格式被识别。我也找不到在服务器级别设置数据库约定的方法,但只能在客户端级别。
这个解决方案也感觉像是一种肮脏的解决方法,我正在寻找正确的做事方式。
我知道我可以使用任意 ID,例如不带任何前缀的电子邮件地址,但这对于我要存储的所有类型的实体来说是不可行的,自然键并不是在每种情况下都可以选择的。
所以我想请教在使用 RavenDB 方面比我更有经验的人。解决这个问题的正确方法是什么?
【问题讨论】:
标签: c# nosql ravendb ravendb-studio