RavenDB不允许在未使用时删除

RavenDB不允许在未使用时删除,ravendb,Ravendb,我刚刚让一个用户在我的Raven DB中删除了两个文档。这导致了一些问题,因为这些文件被其他文件引用。我知道Raven有一个要级联删除的包,但我更想寻找一种方法,如果它被另一个文档引用,就不允许删除。有没有一种标准的RavenDB方法可以做到这一点?或者我需要遍历所有文档以检查文档是否被引用?鲍勃,不幸的是,没有标准的方法来执行此操作,因为数据库本身不知道文档之间的关系是什么 因此,如果您想阻止用户删除这些文档,那么是的,您必须检查自己是否有其他文档引用当前文档。正如Daniel所说,Raven

我刚刚让一个用户在我的Raven DB中删除了两个文档。这导致了一些问题,因为这些文件被其他文件引用。我知道Raven有一个要级联删除的包,但我更想寻找一种方法,如果它被另一个文档引用,就不允许删除。有没有一种标准的RavenDB方法可以做到这一点?或者我需要遍历所有文档以检查文档是否被引用?

鲍勃,不幸的是,没有标准的方法来执行此操作,因为数据库本身不知道文档之间的关系是什么


因此,如果您想阻止用户删除这些文档,那么是的,您必须检查自己是否有其他文档引用当前文档。

正如Daniel所说,RavenDB不知道文档之间的关联,因此它无法立即执行此操作

但是,您可以实现自己的捆绑包,并使用该功能否决/允许删除成功


如果您想沿着这条路线走下去,请看一下bundle是如何实现的。你只需要做相反的事情。

谢谢,丹尼尔。您知道我是否需要对每种文档类型进行许多单独的查询吗?或者有一个查询可以返回我要删除的文档的任何实例吗?对不起,我不理解这个问题。您能解释一下吗?我能做一个查询来查看某个文档ID是否存在不止一次吗?如果不止一个,那么我知道它被另一个文档引用。否则,我将不得不对每种文档类型进行单独的查询,以查看它们是否引用了我要删除的文档。。。这可能是一个改进的有趣机会。我得核实一下。谢谢删除触发器链接已断开。你有更好的方法吗?我认为这样做的主要部分是找到所有引用该文档的文档,并将其删除。事实上,如果任何文档引用了要删除的文档,那么我想抛出一个异常。在您提供的链接中,可以通过以下方式找到引用的文档:var documentsToDelete=document.Metadata.Value(MetadataKeys.documentsToDelete);这对你有意义吗?我在代码中尝试了这一点,结果为空。