2012-02-15 2 views
3

Я немного застрял в домашней работе db4o, и я действительно не знаю, как это решить.DB4O рекурсивное удаление, как это работает на самом деле?

Дело в том, что у меня есть простая школьная студенческая/кредитная/учебная база данных. Объекты имеют следующие атрибуты:

Студент:

  • ID
  • Имя

курс:

  • ID
  • Имя
  • Тип

Кредит:

  • Студент
  • курс
  • Grade

Теперь при удалении курса я должен также удалить кредит или кредиты, которые имеют ссылку на этот курс. Я прочитал руководство db4o и попытался понять всю эту вещь cascadeOnDelete, но, во-первых, я не уверен, что мне нужно установить для cascadeOnDelete значение true для курса или для объекта кредита?

Следующая проблема заключается в том, что я должен быть в состоянии найти все кредиты со ссылкой на этот курс. Как точно это сделать в db4o?

В руководстве db4o есть несколько примеров, но с жестко закодированными значениями, поэтому это не очень полезно. Есть ли способ использовать SQL-запросы в db4o для поиска кредитов с «правильными» ссылками?

Также мне нужно сначала сохранить курс, а затем найти кредиты, а затем удалить кредиты сначала и, наконец, курс?

Я совершенно смущен и не знаю, как действовать, поэтому любая помощь ценится. Благодарю.

ответ

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, что обеспечивает дальнейшее объяснение.

Смежные вопросы