var config = Db4oEmbedded.NewConfiguration ();
using (var container = Db4oEmbedded.OpenFile (config, FILE))
{
var foo = new Foo ("Test");
container.Store (foo);
foo.Name = "NewName";
container.Store (foo);
}
以下面的格式解决foo容器历史的任何方法?
使用值“Test”Foo创建Foo
Foo的属性“Test”更改为“NewName”
答案 0 :(得分:0)
您可以通过实施event-handlers来实现。基本上,您可以为创建和更新事件注册事件处理程序。像这样:
IEventRegistry events = EventRegistryFactory.ForObjectContainer(container);
events.Creating +=delegate(object sender, CancellableObjectEventArgs args)
{
Console.WriteLine("{0} created: Value {1}",args.Object.GetType(),args.Object);
};
要查看值更改,您可能需要在事件处理程序中查看旧状态。你可以这样做:
IEventRegistry events = EventRegistryFactory.ForObjectContainer(container);
events.Creating +=delegate(object sender, CancellableObjectEventArgs args)
{
IObjectContainer eventContainer = args.ObjectContainer();
object oldVersion = eventContainer.Ext().Peek(args.Object,1,false);
object currentVersion = args.Object;
// Do comparison and print stuff
};
当然,比较和打印是你必须要做的工作。没有内置的东西。