Skip to main content
.NET 6.0+

XPObject Class

Implements the IXPObject and provides an autogenerated integer key mapped to the ‘OID’ field.

Namespace: DevExpress.Xpo

Assembly: DevExpress.Xpo.v23.2.dll

NuGet Package: DevExpress.Xpo


public abstract class XPObject :


Persistent objects are the objects that can be saved to and restored from a data store. Persistent objects represent the records in a table and encapsulate all the required relationships. The field values are represented as properties. Therefore a data table is merely represented by a collection of persistent objects. With eXpress Persistent Objects you will never have to deal with table mapping - all you need to do is to define persistent object classes, and XPO will automatically generate a database for them.

When creating a persistent object by deriving from the XPBaseObject, XPCustomObject or XPObject class, an OptimisticLockingAttribute is automatically applied to it. This attribute specifies whether a session can lock a persistent object’s state (allows optimistic locking to be enabled).

For more information, Optimistic Concurrency.

The following code demonstrates how to declare a persistent object.

using DevExpress.Xpo;

// Other base classes:

public class MyClass : XPObject {
    // XPObject has a built-in Integer key and you can't add a custom key
    public MyClass(Session session) : base(session) { }
    string fMyProperty;
    public string MyProperty {
        get { return fMyProperty; }
        set { SetPropertyValue(nameof(fMyProperty), ref fMyProperty, value); }


Task-Based Help

See Also