2012-02-15 58 views
3

我有点卡在我的db4o家庭作业,我真的不知道如何解决这个问题。DB4O递归删除,它是如何工作的?

这种情况是我有一个简单的学校学生/学分/课程数据库。对象具有以下属性:

学生:

  • ID
  • 名称

课程:

  • ID
  • 名称
  • 类型

信用:

  • 学生

现在删除课程时我也应该删除的信用卡或具有参考该课程的学分。我已经阅读了db4o手册,并试图理解这个cascadeOnDelete的全部内容,但是我不确定的第一件事是,我必须将cascadeOnDelete设置为true,以用于课程或信用对象?

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

db4o手册有一些例子,但是硬编码值并不是很有用。有没有办法在db4o中使用SQL查询来查找带有“正确”引用的信用?

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

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

回答

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提供进一步的解释。