In XAF applications, all data-aware manipulations are performed via the Object Space - an abstraction on the database context, allowing you to query or modify data in the transaction. Object Space is an ORM-independent implementation of the well-known Repository and Unit Of Work design patterns.
Object Space members are declared in the IObjectSpace interface. The BaseObjectSpace and CompositeObjectSpace classes implement the common code. XAF provides the following CompositeObjectSpace descendants:
- EFObjectSpace - used to access data via a DbContext when the Entity Framework 6 data model is used;
- XPObjectSpace - used to access data via a Session when the XPO data model is used.
- NonPersistentObjectSpace - used to manage non-persistent objects that are not mapped to the database.
In most cases, you will access Object Space via the IObjectSpace interface and do not need to use these classes directly.
To see how you can access an IObjectSpace object to write business logic in various contexts, proceed to the Ways to Implement Business Logic topic. To learn about Object Space API, see Create, Read, Update and Delete Data.