неподдерживаемое изменение иерархии классов в Db4o - PullRequest
1 голос
/ 17 января 2011

У меня есть:

static class Db4o...

и:

class Db4oBase... // which uses Db4o class

, где я могу:

class Customer : Db4oBase
{
    public Customer(string name)
    {
    }
}

, чтобы я мог:

Customer customer = new Customer("Acbel Polytech Philippines");

customer.store();  //something like that

Это работало, пока в какой-то момент в моей разработке код ниже неожиданно не заработал:

class Db4o
{
    .
    .
    .
    public static IObjectSet Retrieve(object obj)
    {
        IObjectSet objectSet = null;

        objectSet = container.Ext().QueryByExample(obj); // This part of the code
                                                         // throws a unsupported
                                                         // class hierarchy.

        return objectSet;
    }
}

Инструкция QueryByExample выбрасывает неподдерживаемую иерархию классов.Кто-нибудь знает, что мне делать?

Ответы [ 3 ]

2 голосов
/ 20 мая 2011

Это произошло, когда вы:

  1. Кодировали класс и затем запускали программу.
  2. Позже вы модифицируете код и добавляете / изменяете родительский класс (изменяя иерархию)
  3. Наконец вы снова запускаете и ... CRASSHHH.

да,Иерархия (наследование) поддерживается, но изменить ее не так просто, чтобы применить к существующему файлу.

1 голос
/ 05 сентября 2011

Каким-то образом изменилась ваша иерархия классов - которая напрямую не поддерживается db4o .Что бы ни случилось, у вас есть следующие опции (из db4o docs):

  • Создание новой иерархии с разными именами, предпочтительно в новом пакете
  • Скопируйте все значения из старых классовна новые классы.
  • Перенаправить все ссылки из существующих объектов на новые классы.
0 голосов
/ 18 января 2011

Хорошо, это то, что я сделал, чтобы удалить исключение.Я только что создал еще один чистый файл базы данных.Но я не выяснил, что является основной причиной, которая привела к этой ошибке.Пока нет времени для этого.Но он удалил исключение «Неподдерживаемое изменение иерархии классов».Поэтому, если кто-то из вас сталкивался с этим, вы можете попытаться сделать то, что я сделал, но если вы знаете основную причину, пожалуйста, опубликуйте это здесь в качестве ответа.Спасибо.

...