3
我知道这篇文章的标题必须让一些人畏缩。自2011年12月以来我一直在使用RavenDB,并且我意识到我已经以不适合使用文档数据库的方式建模我的数据。首先,我完全明白这一点。其次,鉴于我目前的情况,我希望有一种方法可以使下面的方案正常工作。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);
}
这个工作,但是...有一个机会,可以富别的东西可以参考,后我做的检查他们。有没有办法在整个方法完成之前锁定其他更改?
我明白如果答案是:“不,你通过这种方式使用文档数据库来搞砸自己。”我只是希望能解决我目前的问题。