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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
 public static void RaiseEvent(IEnumerable <IEntity> entities, EntityPersistentOperater operType, EntityPersistentEventType eventType)
 {
     SubscribeManager.Publish <EntityPersistentSubject>(IsQueue(eventType), new EntitiesArgs(entities, operType, eventType));
 }
Beispiel #4
0
 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);
        }
Beispiel #10
0
        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);
        }