[Expand]General Information
[Expand]WinForms Controls
[Expand]ASP.NET Controls and MVC Extensions
[Expand]ASP.NET Bootstrap Controls
[Expand]ASP.NET Core Bootstrap Controls
[Expand]WPF Controls
[Expand]Xamarin Controls
[Expand]Windows 10 App Controls
[Expand]Office File API
[Expand]Reporting
[Expand]Report and Dashboard Server
[Expand]Dashboard
[Collapse]eXpressApp Framework
 [Expand]Fundamentals
 [Expand]Getting Started
 [Expand]Concepts
 [Expand]Design-Time Features
 [Expand]Deployment
 [Expand]Task-Based Help
  Frequently Asked Questions (FAQ)
 [Collapse]API Reference
  [Expand]DevExpress.EasyTest.Framework
  [Collapse]DevExpress.ExpressApp
   [Collapse]BaseObjectSpace Class
     BaseObjectSpace Members
     BaseObjectSpace Constructor
    [Expand]BaseObjectSpace Properties
    [Expand]BaseObjectSpace Events
    [Expand]BaseObjectSpace Methods
    CheckCompatibilityType Enumeration
   [Expand]CollectionSource Class
   [Expand]CollectionSourceBase Class
    CollectionSourceDataAccessMode Enumeration
    CollectionSourceMode Enumeration
   [Expand]CollectionSourceModeAttribute Class
   [Expand]CompositeView Class
    ConfirmationResult Enumeration
    ConfirmationType Enumeration
   [Expand]Controller Class
   [Expand]CreateCustomCollectionSourceEventArgs Class
   [Expand]CreateCustomCurrentObjectDetailViewEventArgs Class
   [Expand]CreateCustomLogonParameterStoreEventArgs Class
   [Expand]CreateCustomLogonWindowControllersEventArgs Class
   [Expand]CreateCustomLogonWindowObjectSpaceEventArgs Class
   [Expand]CreateCustomModelCacheManagerEventArgs Class
   [Expand]CreateCustomModelDifferenceStoreEventArgs Class
   [Expand]CreateCustomObjectSpaceProviderEventArgs Class
   [Expand]CreateCustomPropertyCollectionSourceEventArgs Class
   [Expand]CreateCustomTemplateEventArgs Class
   [Expand]CustomCheckCompatibilityEventArgs Class
   [Expand]CustomHasPermissionToEventArgs Class
   [Expand]CustomizeFormattingCultureEventArgs Class
   [Expand]CustomizeLanguageEventArgs Class
   [Expand]CustomizeTemplateEventArgs Class
   [Expand]CustomizeViewShortcutArgs Class
   [Expand]CustomProcessShortcutEventArgs Class
   [Expand]DashboardView Class
   [Expand]DashboardViewCreatedEventArgs Class
   [Expand]DashboardViewCreatingEventArgs Class
    DatabaseUpdateMode Enumeration
   [Expand]DatabaseVersionMismatchEventArgs Class
   [Expand]DefaultListViewOptionsAttribute Class
   [Expand]DetailView Class
   [Expand]DetailViewCreatedEventArgs Class
   [Expand]DetailViewCreatingEventArgs Class
   [Expand]Frame Class
    FrameContext Enumeration
   [Expand]IModelDifference Interface
   [Expand]IModelDifferenceAspect Interface
   [Expand]IModelExtender Interface
    InformationPosition Enumeration
    InformationType Enumeration
   [Expand]IObjectSpace Interface
   [Expand]IObjectSpaceLink Interface
   [Expand]IObjectSpaceProvider Interface
   [Expand]ISettingsProvider Interface
   [Expand]ISupportNewItemRowPosition Interface
   [Expand]ISupportUpdate Interface
   [Expand]IXafEntityObject Interface
   [Expand]LastLogonParametersReadEventArgs Class
   [Expand]LastLogonParametersReadingEventArgs Class
   [Expand]LastLogonParametersWritingEventArgs Class
   [Expand]ListView Class
   [Expand]ListViewCreatedEventArgs Class
   [Expand]ListViewCreatingEventArgs Class
   [Expand]ListViewFindPanelAttribute Class
   [Expand]LoggingOffEventArgs Class
   [Expand]LogonEventArgs Class
   [Expand]LogonFailedEventArgs Class
    LookupEditCollectionSourceMode Enumeration
   [Expand]LookupEditPropertyCollectionSource Class
    MasterDetailMode Enumeration
   [Expand]MessageOptions Class
   [Expand]ModelCacheManager Class
   [Expand]ModelDifferenceStore Class
   [Expand]ModelStoreBase Class
   [Expand]ModuleBase Class
   [Expand]NestedFrame Class
    Nesting Enumeration
    NewItemRowPosition Enumeration
    NewWindowTarget Enumeration
   [Expand]NonPersistentObjectSpace Class
   [Expand]ObjectChangedEventArgs Class
   [Expand]ObjectManipulatingEventArgs Class
   [Expand]ObjectsCountGettingEventArgs Class
   [Expand]ObjectsManipulatingEventArgs Class
   [Expand]ObjectSpaceCreatedEventArgs Class
   [Expand]ObjectView Class
   [Expand]ObjectViewController Class
   [Expand]ObjectViewController<ViewType, ObjectType> Class
   [Expand]ProcessActionContainerEventArgs Class
   [Expand]PropertyCollectionSource Class
    SchemaUpdateMode Enumeration
   [Expand]SecuritySystem Class
    SelectionType Enumeration
   [Expand]ShowViewParameters Class
   [Expand]ShowViewSource Class
   [Expand]ShowViewStrategyBase Class
    TargetWindow Enumeration
   [Expand]TemplateContext Structure
    UIType Enumeration
   [Expand]ValidateObjectEventArgs Class
   [Expand]View Class
   [Expand]ViewController Class
   [Expand]ViewController<ViewType> Class
   [Expand]ViewCreatedEventArgs Class
   [Expand]ViewCreatingEventArgs Class
   [Expand]ViewItemsChangedEventArgs Class
    ViewItemsChangedType Enumeration
   [Expand]ViewShortcut Class
   [Expand]ViewShowingEventArgs Class
   [Expand]ViewShownEventArgs Class
    ViewType Enumeration
   [Expand]WebMessageOptions Class
   [Expand]Window Class
   [Expand]WindowController Class
    WindowType Enumeration
   [Expand]WinMessageOptions Class
    WinMessageType Enumeration
   [Expand]XafApplication Class
   [Expand]XafDataView Class
   [Expand]XafDataViewRecord Class
   [Expand]XafInstantFeedbackRecord Class
  [Expand]DevExpress.ExpressApp.Actions
  [Expand]DevExpress.ExpressApp.AuditTrail
  [Expand]DevExpress.ExpressApp.Chart
  [Expand]DevExpress.ExpressApp.Chart.Web
  [Expand]DevExpress.ExpressApp.Chart.Win
  [Expand]DevExpress.ExpressApp.CloneObject
  [Expand]DevExpress.ExpressApp.ConditionalAppearance
  [Expand]DevExpress.ExpressApp.Dashboards
  [Expand]DevExpress.ExpressApp.Dashboards.Web
  [Expand]DevExpress.ExpressApp.Dashboards.Win
  [Expand]DevExpress.ExpressApp.Data
  [Expand]DevExpress.ExpressApp.DC
  [Expand]DevExpress.ExpressApp.DC.ClassGeneration
  [Expand]DevExpress.ExpressApp.Editors
  [Expand]DevExpress.ExpressApp.EF
  [Expand]DevExpress.ExpressApp.EF.Utils
  [Expand]DevExpress.ExpressApp.FileAttachments.Web
  [Expand]DevExpress.ExpressApp.FileAttachments.Win
  [Expand]DevExpress.ExpressApp.Filtering
  [Expand]DevExpress.ExpressApp.HtmlPropertyEditor.Web
  [Expand]DevExpress.ExpressApp.HtmlPropertyEditor.Win
  [Expand]DevExpress.ExpressApp.Kpi
  [Expand]DevExpress.ExpressApp.Layout
  [Expand]DevExpress.ExpressApp.Maps.Mobile
  [Expand]DevExpress.ExpressApp.Maps.Mobile.Editors
  [Expand]DevExpress.ExpressApp.Maps.Web
  [Expand]DevExpress.ExpressApp.Maps.Web.Helpers
  [Expand]DevExpress.ExpressApp.MiddleTier
  [Expand]DevExpress.ExpressApp.Mobile
  [Expand]DevExpress.ExpressApp.Mobile.Editors
  [Expand]DevExpress.ExpressApp.Mobile.MobileModel
  [Expand]DevExpress.ExpressApp.Mobile.SystemModule
  [Expand]DevExpress.ExpressApp.Mobile.Templates
  [Expand]DevExpress.ExpressApp.Model
  [Expand]DevExpress.ExpressApp.Model.Core
  [Expand]DevExpress.ExpressApp.Model.NodeGenerators
  [Expand]DevExpress.ExpressApp.ModelEditor
  [Expand]DevExpress.ExpressApp.Notifications
  [Expand]DevExpress.ExpressApp.Notifications.Web
  [Expand]DevExpress.ExpressApp.Notifications.Win
  [Expand]DevExpress.ExpressApp.Office.Win
  [Expand]DevExpress.ExpressApp.PivotChart
  [Expand]DevExpress.ExpressApp.PivotChart.Web
  [Expand]DevExpress.ExpressApp.PivotChart.Win
  [Expand]DevExpress.ExpressApp.PivotGrid
  [Expand]DevExpress.ExpressApp.PivotGrid.Web
  [Expand]DevExpress.ExpressApp.PivotGrid.Win
  [Expand]DevExpress.ExpressApp.Reports
  [Expand]DevExpress.ExpressApp.Reports.Web
  [Expand]DevExpress.ExpressApp.Reports.Win
  [Expand]DevExpress.ExpressApp.ReportsV2
  [Expand]DevExpress.ExpressApp.ReportsV2.Mobile
  [Expand]DevExpress.ExpressApp.ReportsV2.Web
  [Expand]DevExpress.ExpressApp.ReportsV2.Win
  [Expand]DevExpress.ExpressApp.Scheduler
  [Expand]DevExpress.ExpressApp.Scheduler.Web
  [Expand]DevExpress.ExpressApp.Scheduler.Win
  [Expand]DevExpress.ExpressApp.ScriptRecorder
  [Expand]DevExpress.ExpressApp.ScriptRecorder.Web
  [Expand]DevExpress.ExpressApp.ScriptRecorder.Win
  [Expand]DevExpress.ExpressApp.Security
  [Expand]DevExpress.ExpressApp.Security.Adapters
  [Expand]DevExpress.ExpressApp.Security.ClientServer.Wcf
  [Expand]DevExpress.ExpressApp.Security.EF.Adapters
  [Expand]DevExpress.ExpressApp.Security.Strategy
  [Expand]DevExpress.ExpressApp.Security.Xpo.Adapters
  [Expand]DevExpress.ExpressApp.StateMachine
  [Expand]DevExpress.ExpressApp.SystemModule
  [Expand]DevExpress.ExpressApp.Templates
  [Expand]DevExpress.ExpressApp.Templates.ActionContainers
  [Expand]DevExpress.ExpressApp.TreeListEditors
  [Expand]DevExpress.ExpressApp.TreeListEditors.Web
  [Expand]DevExpress.ExpressApp.TreeListEditors.Win
  [Expand]DevExpress.ExpressApp.Updating
  [Expand]DevExpress.ExpressApp.Utils
  [Expand]DevExpress.ExpressApp.Validation
  [Expand]DevExpress.ExpressApp.Validation.Web
  [Expand]DevExpress.ExpressApp.Validation.Win
  [Expand]DevExpress.ExpressApp.ViewVariantsModule
  [Expand]DevExpress.ExpressApp.Web
  [Expand]DevExpress.ExpressApp.Web.Controls
  [Expand]DevExpress.ExpressApp.Web.Editors
  [Expand]DevExpress.ExpressApp.Web.Editors.ASPx
  [Expand]DevExpress.ExpressApp.Web.SystemModule
  [Expand]DevExpress.ExpressApp.Web.Templates
  [Expand]DevExpress.ExpressApp.Web.Utils
  [Expand]DevExpress.ExpressApp.Win
  [Expand]DevExpress.ExpressApp.Win.Core
  [Expand]DevExpress.ExpressApp.Win.Editors
  [Expand]DevExpress.ExpressApp.Win.Model
  [Expand]DevExpress.ExpressApp.Win.SystemModule
  [Expand]DevExpress.ExpressApp.Win.Templates
  [Expand]DevExpress.ExpressApp.Win.Templates.Navigation
  [Expand]DevExpress.ExpressApp.Win.Utils
  [Expand]DevExpress.ExpressApp.Workflow
  [Expand]DevExpress.ExpressApp.Workflow.Win
  [Expand]DevExpress.ExpressApp.Xpo
  [Expand]DevExpress.ExpressApp.Xpo.Utils
  [Expand]DevExpress.Persistent.Base
  [Expand]DevExpress.Persistent.Base.General
  [Expand]DevExpress.Persistent.Base.ReportsV2
  [Expand]DevExpress.Persistent.Base.Security
  [Expand]DevExpress.Persistent.BaseImpl
  [Expand]DevExpress.Persistent.BaseImpl.EF
  [Expand]DevExpress.Persistent.BaseImpl.EF.PermissionPolicy
  [Expand]DevExpress.Persistent.BaseImpl.PermissionPolicy
  [Expand]DevExpress.Persistent.Validation
[Expand]eXpress Persistent Objects
[Expand]CodeRush
[Expand]CodeRush Classic
[Expand]Cross-Platform Core Libraries
[Expand]Tools and Utilities
 End-User Documentation
View this topic on docs.devexpress.com (Learn more)

BaseObjectSpace Class

A base class for the classes that implement the IObjectSpace interface.

Namespace:DevExpress.ExpressApp
Assembly:DevExpress.ExpressApp.v19.1.dll

Expanded Syntax

Expanded Remarks

When using XAF for building business applications, you can choose which ORM system to utilize. Currently, it can be either the eXpressPersistent Objects library (XPO) or the Entity Framework. Historically, the eXpressApp Framework has been based on XPO. In release 2012v1, we started to support the Entity Framework. For this purpose, we have made XAF core independent from any dependencies on a specific data layer. Now, the classes that are required to interact with a particular data layer are contained in separate libraries, DevExpress.ExpressApp.Xpo and DevExpress.ExpressApp.EF. You can create a custom library for working with an alternative ORM system. All of these libraries should contain an Object Space class. It represents an instrument that allows managing a cache with persistent objects. For instance, the DevExpress.ExpressApp.Xpo library contains the XPObjectSpace class. It is a wrapper over the DevExpress.Xpo.UnitOfWork class, which represents a cache with persistent objects in XPO. The DevExpress.ExpressApp.EF library contains the EFObjectSpace class. It is a wrapper over the ObjectContext, which represents a container for in-memory objects in the Entity Framework. Any Object Space class must support the IObjectSpace interface. This interface exposes the members that do not depend on the used ORM system and the members that are data layer-specific. XAF supplies the BaseObjectSpace class. Its members can serve as the implementation of the IObjectSpace interface members that do not depend on the ORM system used. Both the XPObjectSpace and EFObjectSpace classes are inherited from the BaseObjectSpace class to support the IObjectSpace interface.

A particular Object Space object is assigned for each View. It helps to retrieve and create objects represented by a View. Moreover, an Object Space tracks all changes made to its objects and saves them to the database when required. To access a View's Object Space, use the View.ObjectSpace property. In addition, you can access the Object Space of an object collection to manage its entire content and individual objects. For this purpose, use the CollectionSourceBase.ObjectSpace property.

Note

The View.ObjectSpace property is not supposed to be used in scenarios where a large amount of data is processed, created or deleted. Instead, use an independent Object Space which is not used by a View. Such an Object Space can be instantiated via the XafApplication.CreateObjectSpace method.

Use an ObjectSpace object's CreateObject method to create persistent objects. In this instance, this Object Space will manage the newly created object's life cycle. All the changes made to this object will be tracked until the Object Space's CommitChanges method is invoked. When executing custom features, use the CommitChanges method to save all the changes made to the persistent objects belonging to the current Object Space. The changes include: creating, modifying or deleting an object (see IsModified, SetModified, ModifiedChanged, and Delete). For instance, the CommitChanges method is called when executing the Save, SaveAndClose and other built-in Actions.

The Object Space class also allows you to perform auxiliary operations with objects: search for the required object (FindObject), getting information on the required object (IObjectSpace.GetKeyPropertyName, IObjectSpace.GetKeyPropertyType and IObjectSpace.GetKeyValue), getting the required objects (GetObject and GetObjectByKey), and others.

When creating a new View, you will need to create a new Object Space. For this purpose, use the XafApplication.CreateObjectSpace method. Note that in specific situations, you can create a View in the current Object Space. For instance, nested List Views that represent non-aggregated collections are created in the parent View's Object Space.

Expanded Inheritance Hierarchy

System.Object
    BaseObjectSpace
       EFObjectSpace
       NonPersistentObjectSpace
       XPObjectSpace

Expanded See Also

Is this topic helpful?​​​​​​​