Die Die Antworten von Jon, Jared und Yshuditelu verwenden Query-by-Example, was den DB4o-Abfragemechanismus weitgehend unbenutzt und möglicherweise in der Zukunft veraltet sein könnte.
Die bevorzugte Methode zum Abfragen von DB4O für .NET ist native Abfragen und LINQ.
// Query for all Pilots using DB4O native query:
var result = db.Query<Pilot>();
Oder alternativ mit Linq-to-DB4O:
// Query for all Pilots using LINQ
var result = from Pilot p in db
select p;
Beide dieser Arbeit vorausgesetzt, Sie kennen die Art (zum Beispiel Pilot) bei der Kompilierung. Wenn Sie nicht die Art zum Zeitpunkt der Kompilierung bekannt ist, können Sie stattdessen eine DB4O SODA-Abfrage verwenden:
var query = db.Query();
query.Constrain(someObj.GetType());
var results = query.Execute();
bearbeiten Warum LINQ anstelle von SODA, Query-by-Example (QBE) oder india Abfrage (NQ)? Weil LINQ das Ausführen von Abfrageausdrücken sehr natürlich macht. Zum Beispiel, hier ist, wie Sie für Piloten namens Michael abfragen würde:
var michaelPilots = from Pilot p in db
where p.Name == "Michael"
select p;
Und LINQ ist zusammensetzbare, das heißt, Sie Dinge wie diese tun können:
var first20MichaelPilots = michaelPilots.Take(20);
Und Sie werden noch eine effiziente Abfrage erhalten Wird in DB4O ausgeführt, wenn Sie über die Ergebnisse iterieren. Das gleiche in SODA oder QBE oder NQ zu tun, ist bestenfalls hässlich.
Beat mich zu den Generika. Das gibt Bonus-Wiederverwendbarkeit für jeden Typ in der Datenbank gespeichert –