1

我有:

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 指令引发不受支持的类层次结构。有人知道我该怎么做吗?

4

3 回答 3

2

它发生在你:

  1. 编写一个类,然后运行程序。
  2. 稍后您修改代码并添加/更改父类(更改层次结构)
  3. 最后你再次运行并...... CRASSSHHH。

是的,支持层次结构(继承),但改变它并不那么简单地应用于现有文件。

于 2011-05-20T16:21:52.443 回答
1

不知何故,您的类层次结构发生了变化—— db4o 不直接支持这一点。发生了什么,您有以下选择(来自 db4o 文档):

  • 创建具有不同名称的新层次结构,最好在新包中
  • 将旧类中的所有值复制到新类中。
  • 将现有对象的所有引用重定向到新类。
于 2011-09-05T11:10:02.877 回答
0

好的,这就是我为删除异常所做的。我刚刚创建了另一个干净的数据库文件。但我还没有找出导致该错误的根本原因。还没有时间。但它删除了“不支持的类层次结构更改”异常。因此,如果你们中的任何人遇到这种情况,您可能想尝试做我所做的事情,但如果您知道根本原因,请在此处发布作为答案。谢谢。

于 2011-01-18T05:36:29.553 回答