ravendb - RavenDB 的引用完整性

标签 ravendb

我知道这篇文章的标题会让一些人感到畏缩。我自 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/

相关文章:

linq - 将 LINQ 与 Lucene 结合使用通过实时投影查询索引

RavenDB Transformer 包含文档列表

data-modeling - RavenDb 不同数据库实例包含

c# - 在 RavenDB 中存储/检索动态数据

c# - 插入RavenDB;最快的方法

sql-server - 哪个面向文档的数据库比 SQL Server 具有更好的报告性能

database - RavenDB 作为 MVC session 存储

ravendb - 为什么要在 raven db 中创建自定义索引?

ravendb - RavenDb 工作室中的这个 HILO 对象是什么?

c# - 文档设计 - 更新评论