Back to Devexpress

XAF0023: Do not implement IObjectSpaceLink in the XPO classes

expressappframework-404104-debugging-testing-and-error-handling-code-diagnostics-xaf0023.md

latest1.4 KB
Original Source

XAF0023: Do not implement IObjectSpaceLink in the XPO classes

  • Sep 13, 2022

Severity: Warning

Do not implement the IObjectSpaceLink interface in an XPO class. Instead, use the Session property to query or modify data inside a persistent class. Use IObjectSpace only in XAF Controllers.

Examples

Invalid Code

csharp
using DevExpress.Xpo;

namespace TestApplication.Module.BusinessObjects {
    // Do not implement IObjectSpaceLink in the XPO classes
    public class BaseObject1 : BaseObject, IObjectSpaceLink { // Warning
        public BaseObject1(Session session) : base(session) {}

        public IObjectSpace ObjectSpace { get; set; }
        public bool IsDirty { 
            get { 
                // Use ObjectSpace only in XAF Controllers
                return ObjectSpace.IsObjectToSave(this) || ObjectSpace.IsNewObject(this); 
            } 
        }
    }
}

Valid Code

csharp
using DevExpress.Xpo;

namespace TestApplication.Module.BusinessObjects {
    public class BaseObject1 : BaseObject {
        public BaseObject1(Session session) : base(session) {}

        public bool IsDirty { 
            get { 
                // This code meets the requirements
                return Session.IsObjectToSave(this) || Session.IsNewObject(this); 
            } 
        }
    }
}