gpt4 book ai didi

ravendb - RavenDB 的引用完整性

转载 作者:行者123 更新时间:2023-12-03 04:57:28 29 4
gpt4 key购买 nike

我知道这篇文章的标题会让一些人感到畏缩。我自 2011 年 12 月以来一直在使用 RavenDB,并且逐渐意识到我以不适合使用文档数据库的方式对数据进行建模。首先,我完全明白这一点。其次,考虑到我目前的情况,我希望有一种方法可以使下面的场景正常工作。

场景:我想删除数据库中的某个Foo文档。但是,如果该文档被另一个文档引用,我不想删除它。所以,我这样做了:

public void Delete(Foo foo)
{
VerifyFooNotUsedByBar(foo); // Make sure no bars reference this foo

VerifyFooNotUsedBySnuh(foo); // Make sure no snuhs reference this foo

// What happens if some other user causes this foo to be referenced
// by a bar, right now?

new GenericData().Delete(foo);
}

这有效,但是......在我对它们进行检查之后, foo 有可能被其他东西引用。有没有办法在整个方法完成之前锁定其他更改?

如果答案是:“不。你这样使用文档数据库就搞砸了。”我只是希望有办法解决我当前的问题。

最佳答案

鲍勃,不完全是,不。即使您对此进行了交易,它也不会锁定。您可以做的是确保引用保留在元数据中。因此,当我引用 Foo 时,我需要更新 Foo 的元数据以告诉它我正在这样做。这将导致单点交易真相。

关于ravendb - RavenDB 的引用完整性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11497381/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com