Below is a list of the main features provided by the eXpress Persistent Objects for .NET (XPO).

•	Transparent and Controllable Object-Relational Mapping System - By using .NET Reflection and attributes introduced by XPO, XPO is able to map the properties of business objects to relational database tables. Object associations (one-to-one, one-to-many, many-to-many), aggregation and inheritance are all FULLY supported.
•	Bindable and Pageable Object Collections - With XPO.NET, you can retrieve collections of persistent objects, paginate and bind them to UI controls with ease.
•	Object Queries - You can specify retrieval, sorting and filtering criteria using straightforward object syntax.
•	The XPView class can query arbitrary combinations of calculated and aggregated values from the object model. It can be used with data binding, providing a good alternative for situations where memory consumption and speed need to be optimized.
•	Enhanced query support includes calculated conditions that can be used with the XPCollection as well as XPView.
•	Full Visual Studio 2005 and .NET 2 support includes the availability of a generic XPCollection and corresponding generic helper methods like GetCollection.
•	Advanced Support for Existing Database Schemas - XPBaseObject can serve as a base class for persistent objects, allowing you to map such objects to an existing database without having to make any modifications whatsoever to the database's structure.
•	A shareable stateless data access layer (DAL) speeds up the process of session creation considerably, allowing for better performance and simpler implementations in ASP.NET and other scenarios where short cache lifespans are desirable.
•	Comprehensive Database Generation and Updates - XPO allows you to generate or update database tables based on the definitions of your persistent object classes.
•	Support for various DB engines - XPO provides built-in support for MS Access and MS SQL Server databases as well as for MySQL, Oracle, PostgreSql, Firebird, PervasiveSQL, VistaDB, SQL Anywhere, Advantage, DB2 and Sybase. This means you can target these database engines without having to make any modifications to your code.
•	XML Model with Custom Attributes - XPO.NET uses an abstract metadata model instead of .NET Reflection. .NET Reflection metadata can be obtained by means of the ReflectionDictionary which is used by default. The XPDictionary class and all its descendants including the ReflectionDictionary have the ability to supply XML data specifying mapping information and custom attributes for modifying the data accumulated via .NET Reflection.
•	Dynamic runtime extension of persistent classes provides for additional flexibility in the object model.
•	Session-less persistent classes don't need to be derived from the XPObject to be handled by XPO.
•	The XpoDefault class stores global settings like a connection string or a shared DAL and simplifies the implementation of multi-session applications.
•	Advanced Criteria System - A wide set of criteria operators allow you to build complex criteria representing the logical expressions used to retrieve objects from the database, including the aggregate operations.
•	Delayed Loading for Object Properties - With XPO.NET, you can improve application performance by delaying the loading of particular properties, such as those which are used rarely or contain large amounts of data.
•	Transaction Support - XPO.NET provides transaction support the same way as Microsoft ADO.NET does. You can easily Begin a transaction, then Commit or Roll it back using appropriate Session methods.
•	Using the Unit of Work principle, XPO can now perform semi-automatic change tracking. The only requirement for this is that your property setters call OnChanged().
•	Nested units of work are now supported. These encapsulate certain operational blocks and can be committed or rolled back together.
•	Optimistic Locking - Optimistic concurrency is supported for updates ("First in wins" rule).
•	Custom Oid - Key attribute has been added. A class property - of any supported data type - annotated with this attribute is treated as a key. Key auto-generation is supported for Guid and Int32 data types.
•	Precise Definition of the Column Type the Persistent Property or Field is Mapped to - The DbTypeAttribute can be used to designate a provider-specific database type for the column which the persistent property or field is mapped to.
•	Explicit Declaration of a String Field of Unlimited Size - Unlimited Text/Memo field size can be defined by specifying the SizeAttribute.Unlimited constant.
•	Custom Type Converters - Transparent conversions of persistent property values from/to database values can be implemented using type converters, for example for security purposes.
•	Persistent Class Template - Provides the easiest and fastest way to add persistent classes to your project.
•	C# Builder, Borland Delphi .NET Support - XPO is fully compatible with the Borland C# Builder and Borland Delphi.NET compiler.
•	Session, XPCollection, XPPageSelector Components - These components allow you to set the DataSource and bind them to any visual component such as a grid control, edit control or any other data-aware controls at design time.
•	IBindingList Collection Behavior - The XPCollection supports the IBindingList and you can add or remove collection items via this interface at run time.
•	Custom Constraints and Indexes - Advanced metadata attributes allow you to specify database constraints and indexes for persistent properties or fields. By handling the SchemaInit event of the Session object you can enforce any custom database modifications.
•	IEditableObject XPBaseObject Behavior - XPBaseObject supports IEditableObject and you can control the object's changes via this interface.
•	Advanced Event System - In order to perform custom actions during object, collection and session manipulations, you can employ the events raised when the session / transaction state or collection contents are changed or the underlying database metadata for the object is about to be modified.
•	Database Integrity Validation - XPO keeps the underlying database up-to-date and integrated automatically, unless you choose to disable this functionality.