c# - db4o,如果添加了字段,如何更新对象?

标签 c# db4o

我该怎么做?
我在 db4o 中存储了一个对象, 例如:

class Person {
    string _name;
    int _age;
}

现在,在数据库中存储了 Persons 之后,我添加了一个新字段:

class Person {
    string _name;
    int _age;
    bool? _newField;
}

当我用新类加载旧类时,_newField 将为 null 或默认值。当我将它保存回数据库时,添加的字段被省略了。

如何使用新字段更新所有现有对象?那可能吗?

最佳答案

如您所说,当您添加新字段时,它具有现有对象的默认值。现在您只需加载一个对象,为该字段设置一个值并再次存储它。然后存储该字段的数据。另见 documentation .

所以你应该能够加载一个对象并更新它:

IObjectContainer container = ...
var persons = from Person p in container                  
              select p;

foreach(var p in persons){
     p.NewField = true; // new value
     container.Store(p);
}

// done

我认为 Nullable bool 的默认值应该是“空”。

如果这不起作用,它看起来像一个错误。您使用的是哪个版本?

关于c# - db4o,如果添加了字段,如何更新对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3805120/

相关文章:

c# - 通过 C# 控制物理设备

c# - 反序列化包含 List<T> : Why is List initially filled with Nulls? 的类

java - 在不同的类上使用 db4o

database - 基于图形的数据库和面向对象的数据库有什么区别?

oop - 如何在对象数据库中设计多对多关系?

c# - Silverlight {Binding} 不会访问类成员

c# - 即使新旧索引相同,是否也可以触发 ComboBox SelectedIndex Changed 事件?

c# - 使用单一服务在 Linux 上测试 Windows DOTNET 服务

c# - db4o 如何通过配置重命名类

java - 对象数据库与经典 MySQL