Коллеги всем доброго времени суток. Подскажите, кто нибудь работал с событийным слоем Entity.
Написал класс обработчик в качестве примера для обучения скомпилировал приложение упал сайт.
Вот пример класса обработчика:
using System; using System.Web; using Terrasoft.Core; using Terrasoft.Core.Entities; using Terrasoft.Core.Entities.Events; namespace Terrasoft.Configuration { [EntityEventListener(SchemaName = "Order")] public class OrderEntityEventListener : BaseEntityEventListener { private UserConnection _userConnection; private LogService _logService; public UserConnection UserConnection { get { if (_userConnection != null) { return _userConnection; } _userConnection = HttpContext.Current.Session["UserConnection"] as UserConnection; if (_userConnection != null) { return _userConnection; } return _userConnection; } set { _userConnection = value; } } public LogService LogService { get => _logService; set => _logService = value; } public OrderEntityEventListener() { LogService = new LogService(UserConnection); } public override void OnInserting(object sender, EntityBeforeEventArgs e) { try { base.OnInserting(sender, e); var systemUserName = UserConnection.CurrentUser.ContactName; var systemUserId = UserConnection.CurrentUser.ContactId; LogService.RecInfo($"LOG:[OnInserting]:systemUserId: {systemUserId}; systemUserName:{systemUserName}"); } catch (Exception exception) { LogService.RecInfo($"LOG:[OnInserting]:Exception: {exception.Message}; {exception.InnerException}"); } } } }
Подскажите, что тут не так? Если кто работал, скинте пожалуйста примеры.
Заранее благодарен
Нравится
Добрый день, Алексей!
UserConnection необходимо получать из sender
Пример:
public override void OnSaved(object sender, EntityAfterEventArgs e) {
base.OnSaved(sender, e);
var entity = (Entity) sender;
var userConnection = entity.UserConnection;
}
Ошибка заключается в том, что слушатели изменений сущностей, работают не только при изменении значений через карточку (в данном случае есть HttpContext) но и в фоновом режиме (процессы, планировщик - без HttpContext).
Добрый день, Алексей!
UserConnection необходимо получать из sender
Пример:
public override void OnSaved(object sender, EntityAfterEventArgs e) {
base.OnSaved(sender, e);
var entity = (Entity) sender;
var userConnection = entity.UserConnection;
}
Ошибка заключается в том, что слушатели изменений сущностей, работают не только при изменении значений через карточку (в данном случае есть HttpContext) но и в фоновом режиме (процессы, планировщик - без HttpContext).