Siaqodb stores objects in a special binary format (objects are not simply serialized). Additional metadata describing each object type is also stored. This enables the Siaqodb engine to perform CRUD operations even without objects being instantiated. An example of this is the SiaqodbManager that allows the user to manage database objects without having to create them at runtime.

Metadata describing object types enables Siaqodb to greatly optimize queries. For example if you want to load objects with specified values for a particular field, the Siaqodb engine will initially only load that field. Only when values match the desired criteria will objects be instantiated and returned.

Siaqodb stores pointers to nested objects. Nested objects are, in turn, stored separately in the Siaqodb database. Using pointers enables Siaqodb to support both partial and eager object loading.

By default, Siaqodb stores all private, internal, protected, public and static fields. If you want to ignore a field you can either use the Sqo.Attributes.Ignore attribute or call the SiaqodbConfigurator.AddIgnore(…) method.

public class Person
{
    public int OID{get;set;}
    public string Name { get; set; }
    public int Age { get; set; }

    [Sqo.Attributes.Ignore]
    public int Ignored { get; set; }
}