db4o Tutorial 中文翻译(七)
2007-05-06 12:19
295 查看
5. 集合和数组
我们将要通过增加Sensor类到Car类,来慢慢转移到实时数据处理using System;
using System.Text;
namespace Db4objects.Db4o.Tutorial.F1.Chapter3
一个Car在需要记录他的比赛情况的时候,可以产生他目前的Sensor Readout :
using System;
using System.Collections;
namespace Db4objects.Db4o.Tutorial.F1.Chapter3
我们现在只要加静态的数据,下一个章节就要加入更灵活的数据了。
5.1. 存储数据
现在你应该很熟悉这个步骤了吧!// storeFirstCar
Car car1 = new Car("Ferrari");
Pilot pilot1 = new Pilot("Michael Schumacher", 100);
car1.Pilot = pilot1;
db.Set(car1);
第二个Car我们要加入2个snapshots:
// storeSecondCar
Pilot pilot2 = new Pilot("Rubens Barrichello", 99);
Car car2 = new Car("BMW");
car2.Pilot = pilot2;
car2.Snapshot();
car2.Snapshot();
db.Set(car2);
5.2. 检索
5.2.1. QBE
首先,要确定snapshots是否被真的加入了.// retrieveAllSensorReadout
IObjectSet result = db.Get(typeof(SensorReadout));
ListResult(result);
注意:原型中给定元素的实际位置是错的。
为了根据一个car的sensor readouts来检索car,我们要记录查看历史
// retrieveCarQBE
IList protoHistory = new ArrayList();
protoHistory.Add(protoReadout);
Car protoCar = new Car(null, protoHistory);
IObjectSet result = db.Get(protoCar);
ListResult(result);
我们也可以检索集合本身,因为他们也是对象
// retrieveCollections
IObjectSet result = db.Get(new ArrayList());
ListResult(result);
这对array不起作用:
// retrieveArrays
ListResult(result);
5.2.2. Native Queries
如果你想用 Native Queries 来通过匹配来查找SensorReadouts, 和检索单个值(非集合、数组),是一样的:public class RetrieveSensorReadoutPredicate : Predicate
// retrieveSensorReadoutNative
IObjectSet results = db.Query(new RetrieveSensorReadoutPredicate());
ListResult(results);
这里是根据匹配的readout 来查找car:
public class RetrieveCarPredicate : Predicate
// retrieveCarNative
IObjectSet results = db.Query(new RetrieveCarPredicate());
ListResult(results);
5.2.3. 检索 API
对arrays and collections操作类似上面的例子. 首先,我们只用匹配值检索 SensorReadouts :// retrieveSensorReadoutQuery IQuery query = db.Query(); query.Constrain(typeof(SensorReadout)); IQuery valueQuery = query.Descend("_values"); valueQuery.Constrain(0.3); valueQuery.Constrain(0.1); IObjectSet results = query.Execute(); ListResult(results); |
// retrieveCarQuery
IQuery query = db.Query();
query.Constrain(typeof(Car));
IQuery historyQuery = query.Descend("_history");
historyQuery.Constrain(typeof(SensorReadout));
IQuery valueQuery = historyQuery.Descend("_values");
valueQuery.Constrain(0.3);
valueQuery.Constrain(0.1);
IObjectSet results = query.Execute();
ListResult(results);
5.3. 更新和删除
应该很熟悉了吧,我们只需要设置car的更新深度:// updateCarPart1
Db4oFactory.Configure().ObjectClass(typeof(Car)).CascadeOnUpdate(true);
// updateCarPart2
IObjectSet result = db.Get(new Car("BMW", null));
Car car = (Car)result.Next();
car.Snapshot();
db.Set(car);
RetrieveAllSensorReadouts(db);
当删除arrays and collections时候没有什么不同的。
从一个集合中删除对象也是一样的。
// updateCollection
IQuery query = db.Query();
query.Constrain(typeof(Car));
IObjectSet result = query.Descend("_history").Execute();
IList history = (IList)result.Next();
history.RemoveAt(0);
db.Set(history);
Car proto = new Car(null, null);
result = db.Get(proto);
foreach (Car car in result)
// deleteAllPart1
Db4oFactory.Configure().ObjectClass(typeof(Car)).CascadeOnDelete(true);
// deleteAllPart2
IObjectSet result = db.Get(new Car(null, null));
foreach (object car in result)
IObjectSet readouts = db.Get(new SensorReadout(null, DateTime.MinValue, null));
foreach (object readout in readouts)
锘縰sing System;
using System.Collections;
using System.IO;
using Db4objects.Db4o;
using Db4objects.Db4o.Query;
namespace Db4objects.Db4o.Tutorial.F1.Chapter3
相关文章推荐
- db4o Tutorial 中文翻译(八)
- db4o Tutorial 中文翻译(九)
- db4o Tutorial 中文翻译(十)
- db4o Tutorial 中文翻译(十一)
- j2ee1.4 tutorial的中文翻译
- Gevent tutorial (Gevent中文教程,Gevent中文翻译)(转载)
- Gevent tutorial (Gevent中文教程,Gevent中文翻译)
- Recurrent Neural Networks Tutorial 中文翻译
- TinyXml-2 Tutorial 中文翻译
- db4o Tutorial 翻译(6)
- awk-模式扫描与处理语言(Aho,Kernighan,Weinberger著,中文翻译)
- 《Entity Framework 6 Recipes》中文翻译系列 (32) ------ 第六章 继承与建模高级应用之TPH与TPT (1)
- Objective-C Runtime Programming Guide 中文翻译
- jQuery中文入门指南,翻译加实例,jQuery的起点教程
- Deep learning with Theano 官方中文教程(翻译)(四)—— 卷积神经网络(CNN)
- webservice之获得中文、英文双向翻译
- 翻译:A Tutorial on the Device Tree (Zynq) -- Part III
- Deep Learning 中文翻译
- 《Entity Framework 6 Recipes》中文翻译系列 (45) ------ 第八章 POCO之获取原始对象与手工同步对象图和变化跟踪器
- 转载:ZooKeeper Programmer's Guide(中文翻译)