Jon、Jared、および yshuditelu による回答では、DB4o のクエリ メカニズムとしてほとんど使用されていない query-by-example が使用されており、将来的には非推奨になる可能性があります。
DB4O for .NET で推奨されるクエリ方法は、ネイティブ クエリと LINQ です。
// Query for all Pilots using DB4O native query:
var result = db.Query<Pilot>();
または、代わりに Linq-to-DB4O を使用します。
// Query for all Pilots using LINQ
var result = from Pilot p in db
select p;
これらは両方とも、コンパイル時にタイプ (Pilot など) がわかっている場合に機能します。コンパイル時にタイプがわからない場合は、代わりに DB4O SODA クエリを使用できます。
var query = db.Query();
query.Constrain(someObj.GetType());
var results = query.Execute();
edit SODA、Query-by-Example (QBE)、Native Query (NQ) の代わりに LINQ を使用する理由 LINQ を使用すると、クエリ式を非常に自然に実行できるからです。たとえば、Michael という名前のパイロットを照会する方法は次のとおりです。
var michaelPilots = from Pilot p in db
where p.Name == "Michael"
select p;
また、LINQ はコンポーザブルです。つまり、次のようなことができます。
var first20MichaelPilots = michaelPilots.Take(20);
また、結果を繰り返し処理する場合でも、DB4O で実行される効率的なクエリを取得できます。SODA、QBE、または NQ で同じことを行うのは、せいぜい醜いです。