Версионность данных поддерживается только для  Domain Components. Для хранения версий бизнес-объекта используется класс самого бизнес-объекта. При этом добавляются служебные поля, реализованные в виде отдельного Domain Component IVersionSupport. Поддержка версионности данных в ListView и DetailView реализована в специальных контроллерах. Выполните шаги, описанные ниже.

[DomainComponent]

public interface VersionObject : IVersionSupport

{

 string Name { get; set; }

}

Чтобы сослаться на такой бизнес-объект из другого существует два способа:

- Стандартный. Используется для того, чтобы ссылаться на конкретную (specific) версию бизнес-объекта.

В примере ниже это RefSpecificVersion.

- Через вычисляемое свойство. Используется для того, чтобы ссылаться на текущую (в зависимости от текущей даты) версию бизнес-объекта. В примере ниже это RefCurrentVersion.

[DomainComponent]

public interface VersionMainObject

{

 string Name { get; set; }

 [Browsable(false)]

 Guid? RefLatestVersionId { get; set; }

 [NonPersistentDc]

 VersionObject RefCurrentVersion { get; set; }

 VersionObject RefSpecificVersion { get; set; }

}

 

[DomainLogic(typeof(VersionMainObject))]

public class VersionMainObjectLogic : DomainLogicBase<VersionMainObject>

{

 public VersionMainObjectLogic(VersionMainObject instance) : base(instance)

 {

 }

 

 public VersionObject RefCurrentVersion

 {

         get { return VersionHelper<VersionObject>.GetCurrentVersion(this.ObjectSpace, this.Instance.RefLatestVersionId); }

         set { this.Instance.RefLatestVersionId = value == null ? (Guid?) null : value.VersionId; }

 }

}

See also