【发布时间】:2012-02-27 21:27:18
【问题描述】:
我刚刚开始在个人项目中使用 RavenDB,到目前为止,插入、更新和查询都非常容易实现。但是,我遇到了需要 GetOrCreate 方法的情况,我想知道实现此目的的最佳方法是什么。
具体来说,我正在与 OpenID 集成,一旦进行身份验证,用户就会被重定向到我的网站。此时,我想从 Raven 检索他们的用户记录(通过查询 ClaimsIdentifier 属性)或创建一个新记录。 Raven 正在设置用户 ID。
显然,我可以在两个语句中编写它,但如果没有围绕 select 和 create 的某种事务,我可能最终会在数据库中使用相同的声明标识符获得两个用户记录。
有没有办法实现这种功能?可能更重要的是你认为我走错了路。我假设即使我可以创建一个事务,它也会使扩展到多台服务器变得困难,并且无论如何都会增加性能瓶颈。
更好的方法是将查询和创建操作作为单独的语句,并在检索用户时检查重复项并在此时合并。还是在计划任务上做类似的事情?
我不禁觉得我在这里遗漏了一些明显的东西,所以对于这个问题的任何建议将不胜感激。
注意:虽然扩展至多台服务器对于个人项目来说似乎没有必要,但我在将它用于工作之前将其用作对 Raven 的评估。
【问题讨论】:
标签: ravendb