您的位置:首页 > 其它

db4o Tutorial 中文翻译(九)

2007-05-06 13:17 232 查看

7. 深层探险

我们已经看到db4o是如何处理对象关系的了,但是我们使用的例子比起现实世界来都过于简单。特别是,我们没有看到db4o在循环结构中如何存储。现在我们来仿真这样的一个结构:隐性的将之前的history list替换为sensorReadout类的对象。

using System;
namespace Db4objects.Db4o.Tutorial.F1.Chapter5

car只和 'head' sensor readout 有关系:

using System;
namespace Db4objects.Db4o.Tutorial.F1.Chapter5

7.1. 存储和更新

这里没有不同:

// storeCar
Pilot pilot = new Pilot("Rubens Barrichello", 99);
Car car = new Car("BMW");
car.Pilot = pilot;
db.Set(car);
现在建立一个 sensor readout 链.。首先设置更新深度:

// setCascadeOnUpdate
Db4oFactory.Configure().ObjectClass(typeof(Car)).CascadeOnUpdate(true);

收集一些sensor readouts.

// takeManySnapshots
IObjectSet result = db.Get(typeof(Car));
Car car = (Car)result.Next();
for (int i=0; i<5; i++)
db.Set(car);

7.2. 检索

现在已经有了一个复杂的结构,我们来检索一下:

首先,来验证是否有了很多的snapshots.:

// retrieveAllSnapshots
IObjectSet result = db.Get(typeof(SensorReadout));
while (result.HasNext())
// retrieveSnapshotsSequentially
IObjectSet result = db.Get(typeof(Car));
Car car = (Car)result.Next();
SensorReadout readout = car.GetHistory();
while (readout != null)
// retrieveSnapshotsSequentiallyImproved
IObjectSet result = db.Get(typeof(Car));
Car car = (Car)result.Next();
SensorReadout readout = car.GetHistory();
while (readout != null)
// setActivationDepth
Db4oFactory.Configure().ObjectClass(typeof(TemperatureSensorReadout))
.CascadeOnActivate(true);

// retrieveSnapshotsSequentially
IObjectSet result = db.Get(typeof(Car));
Car car = (Car)result.Next();
SensorReadout readout = car.GetHistory();
while (readout != null)
// deleteAll
IObjectSet result = db.Get(typeof(Object));
foreach (object item in result)
锘縰sing System;
using System.IO;
using Db4objects.Db4o;
namespace Db4objects.Db4o.Tutorial.F1.Chapter5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: