DB4O рекурсивное удаление, как оно на самом деле работает? - PullRequest
3 голосов
/ 16 февраля 2012

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

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

Student:

  • ID
  • Имя

Курс:

  • ID
  • Имя
  • Тип

Кредит:

  • Student
  • Курс
  • Оценка

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

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

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

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

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

1 Ответ

1 голос
/ 24 октября 2012

Вы можете включить каскадное удаление на уровне БД или только для определенных классов:

// 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 есть статья об удалении объектов , которая дает дополнительные пояснения.1006 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...