<html> <head> <META http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>SODA Query Graph</title> <link rel="stylesheet" type="text/css" href="../../../../style.css"> </head> <body> <div class="CommonContent"> <div class="CommonContentArea"> <h1>SODA Query Graph</h1><p><br><br>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):</p> <ul class="unIndentedList"><li> create a root of a query object<br><br><span name="cs_wiki_filter" csw_filters="cs"><br> c#:<br><code> IQuery queryRootNode = db.Query();</code><br> </span><br> <span name="cs_wiki_filter" csw_filters="vb"><br> VB:<br> <code>IQuery queryRootNode = db.Query()</code><br> </span><br></li><li> add constraints to any node anywhere<br><br><span name="cs_wiki_filter" csw_filters="cs"><br> c#:<br><code>queryRootNode.Constrain(typeof(Foo));</code><br> </span><br><span name="cs_wiki_filter" csw_filters="vb"><br> VB:<br> <code>queryRootNode.Constrain(GetType(Foo))</code><br> </span><br></li><li> navigate from any query node to any subordinate node<br><br><span name="cs_wiki_filter" csw_filters="cs"><br>c#:<br><code>IQuery barNode = queryRootNode.Descend("bar");</code><br> </span><br><span name="cs_wiki_filter" csw_filters="vb"><br> VB:<br> <code>IQuery barNode = queryRootNode.Descend("bar")</code><br> </span><br></li><li> add further constraints to any node<br><br><span name="cs_wiki_filter" csw_filters="cs"><br> c#:<br><code>IConstraint barConstraint = barNode.Constrain(5);</code><br> </span><br> <span name="cs_wiki_filter" csw_filters="vb"><br> VB:<br> <code>IConstraint barConstraint = barNode.Constrain(5)</code><br> </span><br></li><li> set the evaluation mode of a node<br><br><span name="cs_wiki_filter" csw_filters="cs"><br> c#:<br><code>barConstraint().Greater();</code><br> </span><br><span name="cs_wiki_filter" csw_filters="vb"><br> VB:<br> <code>barConstraint().Greater()</code><br> </span><br></li></ul> <p>The API is very powerful with a small number of method calls.</p> <p>The "backward" order to add constraints first and to specify the evaluation mode as a second step allows plugging complex objects into a query.</p><br></div> </div> <div id="footer"> This revision (2) was last Modified 2008-03-02T14:48:05 by Tetyana. </div> </body> </html>