到现在为止,我们已经可以操作实体类了。但是如何操作子类或者接口呢?

为了方便讲解,我们将创造不同种类的sensors







Car的snapshot也要跟着变化:

6.1. 存储


代码只是加入了与sensor的交互而已,其他部分没有动:
db4o Tutorial 中文翻译(八)// storeFirstCar
db4o Tutorial 中文翻译(八)
Car car1 = new Car("Ferrari");
db4o Tutorial 中文翻译(八)Pilot pilot1 
= new Pilot("Michael Schumacher"100);
db4o Tutorial 中文翻译(八)car1.Pilot 
= pilot1;
db4o Tutorial 中文翻译(八)db.Set(car1);

db4o Tutorial 中文翻译(八)// storeSecondCar
db4o Tutorial 中文翻译(八)
Pilot pilot2 = new Pilot("Rubens Barrichello"99);
db4o Tutorial 中文翻译(八)Car car2 
= new Car("BMW");
db4o Tutorial 中文翻译(八)car2.Pilot 
= pilot2;
db4o Tutorial 中文翻译(八)car2.Snapshot();
db4o Tutorial 中文翻译(八)car2.Snapshot();
db4o Tutorial 中文翻译(八)db.Set(car2);

6.2. 检索


db4o提供所有的给定类型的对象。在检索给定类型的对象时候,不管他们是否是子类或者其他,只要给出一个原型就可以。
db4o Tutorial 中文翻译(八)// retrieveTemperatureReadoutsQBE
db4o Tutorial 中文翻译(八)
SensorReadout proto = new TemperatureSensorReadout(DateTime.MinValue, nullnull0.0);
db4o Tutorial 中文翻译(八)IObjectSet result 
= db.Get(proto);
db4o Tutorial 中文翻译(八)ListResult(result);

db4o Tutorial 中文翻译(八)// retrieveAllSensorReadoutsQBE
db4o Tutorial 中文翻译(八)
SensorReadout proto = new SensorReadout(DateTime.MinValue, nullnull);
db4o Tutorial 中文翻译(八)IObjectSet result 
= db.Get(proto);
db4o Tutorial 中文翻译(八)ListResult(result);



当在如下情况时QBE就不合适了:如果给定的类是一个接口或者抽象类。有一个小诀窍:只要获取对象的类型就可以了
db4o Tutorial 中文翻译(八)// retrieveAllSensorReadoutsQBEAlternative
db4o Tutorial 中文翻译(八)
IObjectSet result = db.Get(typeof(SensorReadout));
db4o Tutorial 中文翻译(八)ListResult(result);



当然,还有SODA API:
db4o Tutorial 中文翻译(八)// retrieveAllSensorReadoutsQuery
db4o Tutorial 中文翻译(八)
IQuery query = db.Query();
db4o Tutorial 中文翻译(八)query.Constrain(
typeof(SensorReadout));
db4o Tutorial 中文翻译(八)IObjectSet result 
= query.Execute();
db4o Tutorial 中文翻译(八)ListResult(result);

6.3. 更新和删除


不管他们在继承树的哪里,他们都和正常的对象一样。.

就像刚刚我们的检索过程, 我们可以删除所有的对象,好进行下一章的讲解。
db4o Tutorial 中文翻译(八)// deleteAll
db4o Tutorial 中文翻译(八)
IObjectSet result = db.Get(typeof(Object));
db4o Tutorial 中文翻译(八)
foreach (object item in result)
}

6.4. 总结


现在我们已经知道了所有的OO特征如何在db4o里面操作。我们将在下一章完成预排工作,下一章将可以看到深层次的探险,包括循环结构。

6.5. 完整代码

 

db4o Tutorial 中文翻译(八)锘縰sing System;
db4o Tutorial 中文翻译(八)
using System.IO;
db4o Tutorial 中文翻译(八)
using Db4objects.Db4o;
db4o Tutorial 中文翻译(八)
using Db4objects.Db4o.Query;
db4o Tutorial 中文翻译(八)
namespace Db4objects.Db4o.Tutorial.F1.Chapter4





相关文章:

  • 2021-09-23
  • 2021-11-07
  • 2021-06-29
  • 2021-08-22
  • 2022-12-23
  • 2021-12-20
  • 2021-08-21
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-02
  • 2022-12-23
相关资源
相似解决方案