Query Aspects
A product uses query aspects to attach snippets of query code to a MetaClass
 or MetaLayout
.
One common example is for setting default sorts on a meta-class.
A product can indicate how a meta-class should be sorted by default as follows (assuming the code is inside a builder. See Builder API).
The example below sets the standard sorting for a person.
Elements.PersonBuilder.DefaultSort("LastName");
Elements.PersonBuilder.DefaultSort("FirstName");
The example above is already optimal, but let's examine below how we could write it using a query aspect.
Elements.PersonBuilder.Filter(
q => q.OrderBy("LastName").OrderBy("FirstName")
)
);
The example above is trivial, but the aspect can include any query elements it wants (see Query API).
The following base classes should suffice for most purposes:
ActionBasedQueryAspect
: As shown above, provides a way of extending the query for a property or class. The example above is anonymous, but the aspects can also be named so that a product can add multiple aspects of the same type.ActionBasedQueryAspect<T>
: AnÂActionBasedQueryAspect
 that provides the source object when the query aspect is on a relation (e.g. if the query aspect is on the relationship from person => company, the source person is provided)