SODA
allows to create a query graph of any complexity by joining field object
constraints. SODA
usage is very generic and can be applied to any objects and conditions. The
following 5 steps can be used (all steps are optional and can be repeated
logically):
IQuery queryRootNode = db.Query();
IQuery queryRootNode = db.Query()
queryRootNode.Constrain(typeof(Foo));
queryRootNode.Constrain(GetType(Foo))
IQuery barNode = queryRootNode.Descend("bar");
IQuery barNode = queryRootNode.Descend("bar")
IConstraint barConstraint = barNode.Constrain(5);
IConstraint barConstraint = barNode.Constrain(5)
barConstraint().Greater();
barConstraint().Greater()
The API is very powerful with a small number of method calls.
The "backward" order to add constraints first and to specify the evaluation mode as a second step allows plugging complex objects into a query.