db4o,如果添加了一个字段,如何更新对象?

时间:2010-09-27 15:06:43

标签: c# db4o

我该怎么做?
我在db4o中存储了一个对象, e.g:

class Person {
    string _name;
    int _age;
}

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

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

当我使用新类加载旧类时,_newField将为null或默认值。当我将其保存回数据库时,会添加添加的字段。

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

1 个答案:

答案 0 :(得分:2)

正如您所说,当您添加新字段时,它具有现有对象的默认值。现在您只需加载一个对象,为该字段设置一个值并再次存储它。然后存储该字段的数据。另见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的默认值应为'empty'。

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