DB4O递归删除,它实际上是如何工作的?

时间:2012-02-15 21:14:50

标签: java database db4o cascading-deletes

我的db4o作业有点困难,我真的不知道如何解决这个问题。

案例是我有一个简单的学生/学分/课程数据库。对象具有以下属性:

学生:

  • ID
  • 名称

课程:

  • ID
  • 名称
  • 类型

信用:

  • 学生
  • 等级

现在,在删除课程时,我还应删除参考该课程的学分或学分。我已经阅读了db4o手册,并试图理解整个cascadeOnDelete的事情,但我不确定的第一件事是我是否必须将cascadeOnDelete设置为true才能用于课程或信用对象?

接下来的问题是,我应该能够通过参考该课程找到所有学分。如何在db4o中完全做到这一点?

db4o手册中有一些示例,但是使用了硬编码值,因此它不是很有帮助。有没有办法在db4o中使用类似SQL的查询来查找带有“正确”引用的信用?

我是否必须首先存储课程原型,然后找到学分,然后先删除学分,最后删除课程?

我在这里很困惑,不知道如何继续,所以任何帮助都表示赞赏。感谢。

1 个答案:

答案 0 :(得分:1)

您可以在数据库级别上启用级联删除,或仅为特定类启用级联删除:

// 1: For the whole DB
container.Ext().Configure().CascadeOnDelete(true);
//2: For a specific type
container.Ext().Configure().ObjectClass(typeof(Circle)).CascadeOnDelete(true);

在codeproject.com上是article on deleting objects,提供了进一步的解释。