【问题标题】:unsupported class hierarchy change in Db4oDb4o 中不支持的类层次结构更改
【发布时间】:2011-01-17 10:06:33
【问题描述】:

我有:

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

【问题讨论】:

  • 曾经改变过继承层次吗?因为 db4o 不支持。当 db4o 检测到类层次结构发生变化时,就会抛出这个异常。
  • @Gamlor 我不记得更改继承层次结构。

标签: c# database-design object db4o object-oriented-database


【解决方案1】:

它发生在你:

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

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

【讨论】:

    【解决方案2】:

    不知何故,您的班级层次结构发生了变化——即not directly supported by db4o。发生了什么,您有以下选择(来自 db4o 文档):

    • 创建具有不同名称的新层次结构,最好在一个新的 包
    • 将旧类中的所有值复制到新类中。
    • 将现有对象的所有引用重定向到新类。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-12-23
        • 1970-01-01
        • 1970-01-01
        • 2013-06-29
        • 2013-06-16
        • 2010-12-21
        • 2023-03-07
        相关资源
        最近更新 更多