Evaluations need to retrieve the actual object instance to be evaluated. That is why they do not work on a server without persistent classes:
01private static void GetPilotsEvaluation() 02
{ 03
Console.WriteLine("Retrieving Pilot objects: Evaluation"); 04
IObjectContainer oc = Db4oFactory.OpenClient("localhost", 0xdb40, "db4o", "db4o"); 05
try 06
{ 07
IQuery query = oc.Query(); 08
09
query.Constrain(typeof(Pilot)); 10
query.Constrain(new EvenPointsEvaluation()); 11
IObjectSet result = query.Execute(); 12
ListResult(result); 13
} 14
finally 15
{ 16
oc.Close(); 17
} 18
}
01Private Shared Sub GetPilotsEvaluation() 02
Console.WriteLine("Retrieving Pilot objects: Evaluation") 03
Dim oc As IObjectContainer = Db4oFactory.OpenClient("localhost", &HDB40, "db4o", "db4o") 04
Try 05
Dim query As IQuery = oc.Query 06
query.Constrain(GetType(Pilot)) 07
query.Constrain(New EvenPointsEvaluation) 08
Dim result As IObjectSet = query.Execute 09
ListResult(result) 10
Finally 11
oc.Close() 12
End Try 13
End Sub
1Private Class EvenPointsEvaluation 2
Implements IEvaluation 3
4
Public Sub Evaluate(ByVal candidate As ICandidate) Implements IEvaluation.Evaluate 5
Dim pilot As Pilot = CType(candidate.GetObject, Pilot) 6
candidate.Include(pilot.Points Mod 2 = 0) 7
End Sub 8
End Class