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);
}
這個工作,但是...有一個機會,可以富別的東西可以參考,後我做的檢查他們。有沒有辦法在整個方法完成之前鎖定其他更改?
我明白如果答案是:「不,你通過這種方式使用文檔數據庫來搞砸自己。」我只是希望能解決我目前的問題。