db4o,如果添加了一个字段,如何更新对象?
我怎样才能做到这一点?
我在db4o中存储了一个对象,例如:
class Person { string _name; int _age; }
现在,在存储在数据库中的人员的hundrets之后,我添加了一个新字段:
class Person { string _name; int _age; bool? _newField; }
当我使用新类加载旧类时,_newField将为null或默认值。 当我将其保存回数据库时,会添加添加的字段。
如何使用新字段更新所有现有对象? 那可能吗?
如您所说,当您添加新字段时,它具有现有对象的默认值。 现在您只需加载一个对象,为该字段设置一个值并再次存储它。 然后存储该字段的数据。 另请参阅文档 。
所以你应该能够加载一个对象并更新它:
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。 你使用的是哪个版本?