Как сделать отмену сохранения entity?

Реализую пример из руководства Бизнес-логика объектов.

namespace Terrasoft.Configuration.VSSales
{
    using System.Threading;
    using Terrasoft.Core;
    using Terrasoft.Core.Entities;
    using Terrasoft.Core.Entities.AsyncOperations;
    using Terrasoft.Core.Entities.AsyncOperations.Interfaces;
    using Terrasoft.Core.Entities.Events;
    using Terrasoft.Core.Factories;
 
    /// <summary>
    /// Слушатель событий сущности "Коммерческие условия".
    /// </summary>
    [EntityEventListener(SchemaName = "ScPriceType")]
    public class ScPriceTypeEventListener : BaseEntityEventListener
    {
        /// <summary>
        /// Обработчик события перед сохранением записи.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public override void OnSaving(object sender, EntityBeforeEventArgs e) {
            var entity = (Entity)sender;
            var userConnection = entity?.UserConnection;
            var foo = false;  // Здесь будет проверка на условие.
            if (foo) {
                // Всё нормально, сохраняем.
                base.OnSaving(sender, e);
            } else {
                // Условие не выполнено, отмена.
                // Что здесь надо написать?
                sender = null; // Не сработало.
            }
        }
    }
}

 

Нравится

2 комментария
Лучший ответ

Добрый день.

 

Для отмены сохранения попробуйте написать такую строчку:

e.IsCanceled = false;

 

Добрый день.

 

Для отмены сохранения попробуйте написать такую строчку:

e.IsCanceled = false;

 

Спасибо, работает.

public override void OnSaving(object sender, EntityBeforeEventArgs e) {
  var entity = (Entity)sender;
  var userConnection = entity?.UserConnection;
 
  if (CheckRules(userConnection, entity)) {
      // Всё нормально, сохраняем.
      base.OnSaving(sender, e);
  } else {
      // Условие не выполнено, отмена.
      if (!(entity is null)) {
          // Вот так работает отмена сохранения записи.
          e.IsCanceled = true;
      }
  }
}

 

Показать все комментарии