public static bool Publish <TEntity>(IEnumerable <IEntity> entities, EntityPersistentOperater operType, EntityPersistentEventType eventType) { var _event = new EntitiesArgs(entities, operType, eventType); var subject = new EntityPersistentSubject(typeof(TEntity), eventType, _event); SynchronizedSubscribeManager.Instance.Publish(subject); return(!_event.Cancel); }
public static T OnBatch <T>(IEnumerable <IEntity> entities, EntityPersistentOperater operater, Func <T> func) { var ret = default(T); RaiseEvent(entities, operater, EntityPersistentEventType.BeforeBatch); ret = func(); RaiseEvent(entities, operater, EntityPersistentEventType.AfterBatch); return(ret); }
public static void RaiseEvent(IEnumerable <IEntity> entities, EntityPersistentOperater operType, EntityPersistentEventType eventType) { SubscribeManager.Publish <EntityPersistentSubject>(IsQueue(eventType), new EntitiesArgs(entities, operType, eventType)); }
public EntitiesArgs(IEnumerable <IEntity> entities, EntityPersistentOperater operType, EntityPersistentEventType eventType) : base(entities.FirstOrDefault().EntityType, eventType) { Entities = entities; OperType = operType; }
/// <summary> /// 用于实体批量处理之后的通知。 /// </summary> /// <param name="entities">批量处理的实体对象。</param> /// <param name="operater"></param> protected virtual void OnAfterBatch(IEnumerable <IEntity> entities, EntityPersistentOperater operater) { }
protected override void OnBeforeBatch(IEnumerable <IEntity> entities, EntityPersistentOperater operater) { Console.WriteLine(operater); }
/// <summary> /// 用于实体批量处理之前的通知。 /// </summary> /// <param name="entities">批量处理的实体对象。</param> /// <param name="operater"></param> /// <returns>取消则返回 false。</returns> protected virtual bool OnBeforeBatch(IEnumerable <IEntity> entities, EntityPersistentOperater operater) { return(true); }
public EntitiesArgs(IEnumerable <IEntity> entities, EntityPersistentOperater operType, EntityPersistentEventType eventType) : base(eventType) { Entities = entities; OperType = operType; }
public static async Task <T> OnBatchAsync <T>(bool notification, IEnumerable <IEntity> entities, EntityPersistentOperater operater, Func <Task <T> > func) { if (!notification) { return(await func()); } var ret = default(T); if (Publish <T>(entities, operater, EntityPersistentEventType.BeforeBatch)) { ret = await func(); Publish <T>(entities, operater, EntityPersistentEventType.AfterBatch); } return(ret); }
public static void Publish <TEntity>(IEnumerable <IEntity> entities, EntityPersistentOperater operType, EntityPersistentEventType eventType) { var subject = new EntityPersistentSubject(typeof(TEntity), eventType, new EntitiesArgs(entities, operType, eventType)); DefaultSubscribeManager.Instance.Publish(subject); }