Как сделать отмену сохранения 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;
///
/// Слушатель событий сущности "Коммерческие условия".
///
[EntityEventListener(SchemaName = "ScPriceType")]
public class ScPriceTypeEventListener : BaseEntityEventListener
{
///
/// Обработчик события перед сохранением записи.
///
///
///
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 комментария
Лучший ответ
18 декабря 2020 12:36
Добрый день.
Для отмены сохранения попробуйте написать такую строчку:
e.IsCanceled = false;
18 декабря 2020 12:36
Добрый день.
Для отмены сохранения попробуйте написать такую строчку:
e.IsCanceled = false;
18 декабря 2020 13:57
Спасибо, работает.
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;
}
}
}
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать