示例#1
0
        /// <summary>
        /// Remove datas
        /// </summary>
        /// <param name="datas">Datas</param>
        /// <param name="activationOption">Activation option</param>
        public sealed override void Remove(IEnumerable <TModel> datas, ActivationOption activationOption = null)
        {
            if (datas.IsNullOrEmpty())
            {
                throw new EZNEWException($"{nameof(datas)} is null or empty");
            }
            var records = new List <IActivationRecord>();

            foreach (var data in datas)
            {
                if (data == null)
                {
                    throw new EZNEWException("remove object data is null");
                }
                if (!data.CanBeRemove)
                {
                    throw new EZNEWException($"Data:{data.IdentityValue} cann't to be remove");
                }
                var record = ExecuteRemove(data, activationOption);//Execute remove
                if (record != null)
                {
                    records.Add(record);
                }
            }
            RepositoryEventBus.PublishRemove(GetType(), datas, activationOption);
            WorkManager.RegisterActivationRecord(records);
        }
 /// <summary>
 /// save async
 /// </summary>
 /// <param name="datas">datas</param>
 public sealed override async Task SaveAsync(IEnumerable<Tuple<First, Second, Third>> datas)
 {
     var records = await ExecuteSaveAsync(datas).ConfigureAwait(false);
     if (records.IsNullOrEmpty())
     {
         return;
     }
     RepositoryEventBus.PublishSave<Tuple<First, Second, Third>>(GetType(), datas);
     WorkFactory.RegisterActivationRecord(records.ToArray());
 }
 /// <summary>
 /// save by third datas
 /// </summary>
 /// <param name="datas">datas</param>
 public sealed override void SaveByThird(IEnumerable<Third> datas)
 {
     var saveRecords = ExecuteSaveByThirdAsync(datas).Result;
     if (saveRecords.IsNullOrEmpty())
     {
         return;
     }
     RepositoryEventBus.PublishSave<Third>(GetType(), datas);
     WorkFactory.RegisterActivationRecord(saveRecords.ToArray());
 }
        /// <summary>
        /// Save by second type datas
        /// </summary>
        /// <param name="datas">Datas</param>
        /// <param name="activationOption">Activation option</param>
        public sealed override void SaveBySecond(IEnumerable <TSecondModel> datas, ActivationOption activationOption = null)
        {
            var saveRecords = ExecuteSaveBySecond(datas, activationOption);

            if (saveRecords.IsNullOrEmpty())
            {
                return;
            }
            RepositoryEventBus.PublishSave(GetType(), datas, activationOption);
            WorkManager.RegisterActivationRecord(saveRecords);
        }
        public static void Init()
        {
            #region User

            //删除用户->删除用户&角色绑定
            RepositoryEventBus.SubscribeRemove <IUserRepository, IUserRoleRepository, User>(c => c.RemoveByFirst, c => c.RemoveByFirst);
            //删除用户->删除用户授权
            RepositoryEventBus.SubscribeRemove <IUserRepository, IUserAuthorizeRepository, User>(c => c.RemoveByFirst, c => c.RemoveByFirst);
            //查询用户->用户转换
            RepositoryEventBus.SubscribeQuery <IUserRepository, IAdminUserRepository, User>(c => c.LoadAdminUser);

            #endregion

            #region Role

            //删除角色->删除角色&用户绑定
            RepositoryEventBus.SubscribeRemove <IRoleRepository, IUserRoleRepository, Role>(c => c.RemoveBySecond, c => c.RemoveBySecond);
            //删除角色->删除角色授权
            RepositoryEventBus.SubscribeRemove <IRoleRepository, IRoleAuthorizeRepository, Role>(c => c.RemoveByFirst, c => c.RemoveByFirst);

            #endregion

            #region AuthorityOperationGroup

            //删除授权操作分组->删除分组下的授权操作
            RepositoryEventBus.SubscribeRemove <IAuthorityOperationGroupRepository, IAuthorityOperationRepository, AuthorityOperationGroup>(c => c.RemoveOperationByGroup, c => c.RemoveOperationByGroup);

            #endregion

            #region AuthorityOperation

            //删除授权操作->删除权限&授权操作绑定
            RepositoryEventBus.SubscribeRemove <IAuthorityOperationRepository, IAuthorityBindOperationRepository, AuthorityOperation>(c => c.RemoveBySecond, c => c.RemoveBySecond);

            #endregion

            #region AuthorityGroup

            //删除权限分组->删除分组下的权限数据
            RepositoryEventBus.SubscribeRemove <IAuthorityGroupRepository, IAuthorityRepository, AuthorityGroup>(c => c.RemoveAuthorityByGroup, c => c.RemoveAuthorityByGroup);

            #endregion

            #region Authority

            //删除权限->删除权限&授权操作绑定
            RepositoryEventBus.SubscribeRemove <IAuthorityRepository, IAuthorityBindOperationRepository, Authority>(c => c.RemoveByFirst, c => c.RemoveByFirst);
            //删除权限->删除角色授权
            RepositoryEventBus.SubscribeRemove <IAuthorityRepository, IRoleAuthorizeRepository, Authority>(c => c.RemoveBySecond, c => c.RemoveBySecond);
            //删除权限->删除用户授权
            RepositoryEventBus.SubscribeRemove <IAuthorityRepository, IUserAuthorizeRepository, Authority>(c => c.RemoveBySecond, c => c.RemoveBySecond);

            #endregion
        }
示例#6
0
        /// <summary>
        /// remove by condition
        /// </summary>
        /// <param name="query">query</param>
        public sealed override async Task RemoveAsync(IQuery query)
        {
            var record = await ExecuteRemoveAsync(query).ConfigureAwait(false);

            if (record == null)
            {
                return;
            }
            RepositoryEventBus.PublishRemove <Tuple <First, Second> >(GetType(), query);
            WorkFactory.RegisterActivationRecord(record);
        }
        /// <summary>
        /// Remove
        /// </summary>
        /// <param name="datas">Datas</param>
        /// <param name="activationOption">Activation option</param>
        public sealed override void Remove(IEnumerable <Tuple <TFirstModel, TSecondModel> > datas, ActivationOption activationOption = null)
        {
            var records = ExecuteRemove(datas, activationOption);

            if (records.IsNullOrEmpty())
            {
                return;
            }
            RepositoryEventBus.PublishRemove(GetType(), datas, activationOption);
            WorkManager.RegisterActivationRecord(records);
        }
        /// <summary>
        /// remove by third datas
        /// </summary>
        /// <param name="datas">datas</param>
        /// <param name="record">activation record</param>
        public sealed override void RemoveByThird(IEnumerable <Third> datas)
        {
            if (datas.IsNullOrEmpty())
            {
                return;
            }
            RepositoryEventBus.PublishRemove <Third>(GetType(), datas);
            IQuery query = CreateQueryByThird(datas);

            Remove(query);
        }
        /// <summary>
        /// Modify Object
        /// </summary>
        /// <param name="expression">modify expression</param>
        /// <param name="query">query model</param>
        public sealed override async Task ModifyAsync(IModify expression, IQuery query)
        {
            var record = await ExecuteModifyAsync(expression, query).ConfigureAwait(false);

            if (record == null)
            {
                return;
            }
            RepositoryEventBus.PublishModify <DT>(GetType(), expression, query);
            WorkFactory.RegisterActivationRecord(record);
        }
        /// <summary>
        /// save by second type datas
        /// </summary>
        /// <param name="datas">datas</param>
        /// <param name="activationOption">activation option</param>
        public sealed override void SaveBySecond(IEnumerable <Second> datas, ActivationOption activationOption = null)
        {
            var saveRecords = ExecuteSaveBySecondAsync(datas, activationOption).Result;

            if (saveRecords.IsNullOrEmpty())
            {
                return;
            }
            RepositoryEventBus.PublishSave(GetType(), datas, activationOption);
            WorkFactory.RegisterActivationRecord(saveRecords.ToArray());
        }
示例#11
0
        /// <summary>
        /// remove by second datas
        /// </summary>
        /// <param name="datas">datas</param>
        public sealed override void RemoveBySecond(IEnumerable <Second> datas)
        {
            var removeRecord = ExecuteRemoveBySecond(datas);

            if (removeRecord == null)
            {
                return;
            }
            RepositoryEventBus.PublishRemove(GetType(), datas);
            WorkFactory.RegisterActivationRecord(removeRecord);
        }
示例#12
0
        /// <summary>
        /// Modify data
        /// </summary>
        /// <param name="expression">Modify expression</param>
        /// <param name="query">Query object</param>
        /// <param name="activationOption">Activation option</param>
        public sealed override void Modify(IModify expression, IQuery query, ActivationOption activationOption = null)
        {
            var newQuery = RepositoryManager.HandleQueryObjectBeforeExecute(query, QueryUsageScene.Modify, AppendModifyCondition);
            var record   = ExecuteModify(expression, newQuery, activationOption);

            if (record != null)
            {
                RepositoryEventBus.PublishModify <TModel>(GetType(), expression, newQuery, activationOption);
                WorkManager.RegisterActivationRecord(record);
                RepositoryManager.HandleQueryObjectAfterExecute(query, newQuery, QueryUsageScene.Modify);
            }
        }
示例#13
0
        /// <summary>
        /// Remove by condition
        /// </summary>
        /// <param name="query">Query object</param>
        /// <param name="activationOption">Activation option</param>
        public sealed override void Remove(IQuery query, ActivationOption activationOption = null)
        {
            var newQuery = RepositoryManager.HandleQueryObjectBeforeExecute(query, QueryUsageScene.Remove, AppendRemoveCondition);
            var record   = ExecuteRemove(newQuery, activationOption);

            if (record != null)
            {
                RepositoryEventBus.PublishRemove <TModel>(GetType(), newQuery, activationOption);
                WorkManager.RegisterActivationRecord(record);
                RepositoryManager.HandleQueryObjectAfterExecute(query, newQuery, QueryUsageScene.Remove);
            }
        }
示例#14
0
        public static void Configure()
        {
            #region User

            //删除用户->删除用户&角色绑定
            RepositoryEventBus.SubscribeRemove <IUserRepository, IUserRoleRepository, User>(c => c.RemoveByFirst, c => c.RemoveByFirst);
            //删除用户->删除用户授权
            RepositoryEventBus.SubscribeRemove <IUserRepository, IUserPermissionRepository, User>(c => c.RemoveByFirst, c => c.RemoveByFirst);

            #endregion

            #region Role

            //删除角色->删除角色&用户绑定
            RepositoryEventBus.SubscribeRemove <IRoleRepository, IUserRoleRepository, Role>(c => c.RemoveBySecond, c => c.RemoveBySecond);
            //删除角色->删除角色授权
            RepositoryEventBus.SubscribeRemove <IRoleRepository, IRolePermissionRepository, Role>(c => c.RemoveByFirst, c => c.RemoveByFirst);

            #endregion

            #region AuthorityOperationGroup

            //删除授权操作分组->删除分组下的授权操作
            RepositoryEventBus.SubscribeRemove <IOperationGroupRepository, IOperationRepository, OperationGroup>(c => c.RemoveOperationByGroup, c => c.RemoveOperationByGroup);

            #endregion

            #region AuthorityOperation

            //删除授权操作->删除权限&授权操作绑定
            RepositoryEventBus.SubscribeRemove <IOperationRepository, IPermissionOperationRepository, Operation>(c => c.RemoveBySecond, c => c.RemoveBySecond);

            #endregion

            #region AuthorityGroup

            //删除权限分组->删除分组下的权限数据
            RepositoryEventBus.SubscribeRemove <IPermissionGroupRepository, IPermissionRepository, PermissionGroup>(c => c.RemovePermissionByGroup, c => c.RemovePermissionByGroup);

            #endregion

            #region Authority

            //删除权限->删除权限&授权操作绑定
            RepositoryEventBus.SubscribeRemove <IPermissionRepository, IPermissionOperationRepository, Permission>(c => c.RemoveByFirst, c => c.RemoveByFirst);
            //删除权限->删除角色授权
            RepositoryEventBus.SubscribeRemove <IPermissionRepository, IRolePermissionRepository, Permission>(c => c.RemoveBySecond, c => c.RemoveBySecond);
            //删除权限->删除用户授权
            RepositoryEventBus.SubscribeRemove <IPermissionRepository, IUserPermissionRepository, Permission>(c => c.RemoveBySecond, c => c.RemoveBySecond);

            #endregion
        }
        /// <summary>
        /// remove by condition
        /// </summary>
        /// <param name="query">query</param>
        /// <param name="activationOption">activation option</param>
        public sealed override async Task RemoveAsync(IQuery query, ActivationOption activationOption = null)
        {
            //append condition
            query = AppendRemoveCondition(query);
            var record = await ExecuteRemoveAsync(query, activationOption).ConfigureAwait(false);

            if (record == null)
            {
                return;
            }
            RepositoryEventBus.PublishRemove <Tuple <First, Second, Third> >(GetType(), query, activationOption);
            WorkFactory.RegisterActivationRecord(record);
        }
示例#16
0
        /// <summary>
        /// Remove by condition
        /// </summary>
        /// <param name="query">Query object</param>
        /// <param name="activationOptions">Activation options</param>
        public sealed override void Remove(IQuery query, ActivationOptions activationOptions = null)
        {
            var newQuery = RepositoryManager.HandleQueryObjectBeforeExecute(query, QueryUsageScene.Remove, AppendRemoveCondition);
            var record   = ExecuteRemove(newQuery, activationOptions);

            if (record == null)
            {
                return;
            }
            RepositoryEventBus.PublishRemove <Tuple <TFirstModel, TSecondModel, TThirdModel> >(GetType(), newQuery, activationOptions);
            WorkManager.RegisterActivationRecord(record);
            RepositoryManager.HandleQueryObjectAfterExecute(query, newQuery, QueryUsageScene.Remove);
        }
        /// <summary>
        /// modify data
        /// </summary>
        /// <param name="expression">modify expression</param>
        /// <param name="query">query object</param>
        /// <param name="activationOption">activation option</param>
        public sealed override async Task ModifyAsync(IModify expression, IQuery query, ActivationOption activationOption = null)
        {
            //append condition
            query = AppendModifyCondition(query);
            var record = await ExecuteModifyAsync(expression, query, activationOption).ConfigureAwait(false);

            if (record == null)
            {
                return;
            }
            RepositoryEventBus.PublishModify <T>(GetType(), expression, query, activationOption);
            WorkFactory.RegisterActivationRecord(record);
        }
示例#18
0
        /// <summary>
        /// Remove Object
        /// </summary>
        /// <param name="query">query model</param>
        public sealed override async Task RemoveAsync(IQuery query)
        {
            //query filter
            query = GlobalQueryFilter(query);
            query = RemoveQueryFilter(query);
            var record = await ExecuteRemoveAsync(query).ConfigureAwait(false);

            if (record == null)
            {
                return;
            }
            RepositoryEventBus.PublishRemove <DT>(GetType(), query);
            WorkFactory.RegisterActivationRecord(record);
        }
        /// <summary>
        /// Get Object List
        /// </summary>
        /// <param name="query">query model</param>
        /// <returns>object list</returns>
        public sealed override async Task <List <DT> > GetListAsync(IQuery query)
        {
            var datas = await GetDataListAsync(query).ConfigureAwait(false);

            QueryCallback(query, true, datas);
            RepositoryEventBus.PublishQuery <DT>(GetType(), datas, result =>
            {
                QueryEventResult <DT> queryResult = result as QueryEventResult <DT>;
                if (queryResult != null)
                {
                    datas = queryResult.Datas;
                }
            });
            return(datas ?? new List <DT>(0));
        }
        /// <summary>
        /// Get Object Paging
        /// </summary>
        /// <param name="query">query model</param>
        /// <returns>object paging</returns>
        public sealed override async Task <IPaging <DT> > GetPagingAsync(IQuery query)
        {
            var paging = await GetDataPagingAsync(query).ConfigureAwait(false);

            IEnumerable <DT> datas = paging;

            QueryCallback(query, true, datas);
            RepositoryEventBus.PublishQuery <DT>(GetType(), datas, result =>
            {
                QueryEventResult <DT> queryResult = result as QueryEventResult <DT>;
                if (queryResult != null)
                {
                    datas = queryResult.Datas;
                }
            });
            return(new Paging <DT>(paging.Page, paging.PageSize, paging.TotalCount, datas));
        }
示例#21
0
        /// <summary>
        /// Get data list
        /// </summary>
        /// <param name="query">Query object</param>
        /// <returns>Return data list</returns>
        public sealed override async Task <List <TModel> > GetListAsync(IQuery query)
        {
            var newQuery = RepositoryManager.HandleQueryObjectBeforeExecute(query, QueryUsageScene.Query, AppendQueryCondition);
            var datas    = await GetDataListAsync(newQuery).ConfigureAwait(false);

            QueryCallback(newQuery, true, datas);
            RepositoryEventBus.PublishQuery(GetType(), datas, newQuery, result =>
            {
                QueryEventResult <TModel> queryResult = result as QueryEventResult <TModel>;
                if (queryResult != null)
                {
                    datas = queryResult.Datas;
                }
            });
            RepositoryManager.HandleQueryObjectAfterExecute(query, newQuery, QueryUsageScene.Query);
            return(datas ?? new List <TModel>(0));
        }
        /// <summary>
        /// save datas
        /// </summary>
        /// <param name="datas">Datas</param>
        /// <param name="activationOptions">Activation options</param>
        public sealed override List <TModel> Save(IEnumerable <TModel> datas, ActivationOptions activationOptions = null)
        {
            if (datas.IsNullOrEmpty())
            {
                throw new EZNEWException($"{nameof(datas)} is null or empty");
            }
            var records     = new List <IActivationRecord>();
            var resultDatas = new List <TModel>();

            foreach (var data in datas)
            {
                if (data == null)
                {
                    continue;
                }
                var saveData = data;
                if (!saveData.IdentityValueIsNone() && saveData.IsNew)
                {
                    var nowData = Get(saveData);
                    if (nowData != null)
                    {
                        saveData = nowData.OnUpdating(saveData);
                    }
                }
                if (saveData.IsNew)
                {
                    saveData = saveData.OnAdding();
                }
                if (!saveData.CanBeSave)
                {
                    throw new EZNEWException($"Data:{saveData.IdentityValue} cann't to be save");
                }
                var record = ExecuteSave(saveData, activationOptions);
                if (record != null)
                {
                    records.Add(record);
                    resultDatas.Add(saveData);
                }
            }
            RepositoryEventBus.PublishSave(GetType(), datas, activationOptions);
            WorkManager.RegisterActivationRecord(records);
            return(resultDatas);
        }
示例#23
0
        /// <summary>
        /// Get data paging
        /// </summary>
        /// <param name="query">Query object</param>
        /// <returns>Return data paging</returns>
        public sealed override async Task <IPaging <TModel> > GetPagingAsync(IQuery query)
        {
            var newQuery = RepositoryManager.HandleQueryObjectBeforeExecute(query, QueryUsageScene.Query, AppendQueryCondition);
            var paging   = await GetDataPagingAsync(newQuery).ConfigureAwait(false);

            IEnumerable <TModel> datas = paging;

            QueryCallback(newQuery, true, datas);
            RepositoryEventBus.PublishQuery(GetType(), datas, newQuery, result =>
            {
                QueryEventResult <TModel> queryResult = result as QueryEventResult <TModel>;
                if (queryResult != null)
                {
                    datas = queryResult.Datas;
                }
            });
            RepositoryManager.HandleQueryObjectAfterExecute(query, newQuery, QueryUsageScene.Query);
            return(Pager.Create(paging.Page, paging.PageSize, paging.TotalCount, datas));
        }
        /// <summary>
        /// Get Object
        /// </summary>
        /// <param name="query">query model</param>
        /// <returns>Object</returns>
        public sealed override async Task <DT> GetAsync(IQuery query)
        {
            var data = await GetDataAsync(query).ConfigureAwait(false);

            var dataList = new List <DT>()
            {
                data
            };

            QueryCallback(query, false, dataList);
            RepositoryEventBus.PublishQuery <DT>(GetType(), dataList, result =>
            {
                QueryEventResult <DT> queryResult = result as QueryEventResult <DT>;
                if (queryResult != null)
                {
                    dataList = queryResult.Datas;
                }
            });
            return(dataList.IsNullOrEmpty() ? default(DT) : dataList.FirstOrDefault());
        }
示例#25
0
        /// <summary>
        /// Get data
        /// </summary>
        /// <param name="query">Query object</param>
        /// <returns>Return data</returns>
        public sealed override async Task <TModel> GetAsync(IQuery query)
        {
            var newQuery = RepositoryManager.HandleQueryObjectBeforeExecute(query, QueryUsageScene.Query, AppendQueryCondition);
            var data     = await GetDataAsync(newQuery).ConfigureAwait(false);

            var dataList = new List <TModel>(1)
            {
                data
            };

            QueryCallback(newQuery, false, dataList);
            RepositoryEventBus.PublishQuery(GetType(), dataList, newQuery, result =>
            {
                QueryEventResult <TModel> queryResult = result as QueryEventResult <TModel>;
                if (queryResult != null)
                {
                    dataList = queryResult.Datas;
                }
            });
            RepositoryManager.HandleQueryObjectAfterExecute(query, newQuery, QueryUsageScene.Query);

            return(dataList.IsNullOrEmpty() ? default : dataList.FirstOrDefault());
        }
        /// <summary>
        /// save datas
        /// </summary>
        /// <param name="datas">datas</param>
        /// <param name="activationOption">activation option</param>
        public sealed override async Task SaveAsync(IEnumerable <T> datas, ActivationOption activationOption = null)
        {
            #region verify parameters

            if (datas.IsNullOrEmpty())
            {
                throw new Exception($"{nameof(datas)} is null or empty");
            }
            foreach (var obj in datas)
            {
                if (obj == null)
                {
                    continue;
                }
                if (!obj.CanBeSave)
                {
                    throw new Exception("data cann't to be save");
                }
            }

            #endregion

            var records = new List <IActivationRecord>(datas.Count());
            foreach (var data in datas)
            {
                var record = await ExecuteSaveAsync(data, activationOption).ConfigureAwait(false);//execute save

                if (record == null)
                {
                    continue;
                }
                records.Add(record);
            }
            RepositoryEventBus.PublishSave(GetType(), datas, activationOption);
            WorkFactory.RegisterActivationRecord(records.ToArray());
        }
        /// <summary>
        /// Remove Objects
        /// </summary>
        /// <param name="objDatas">objects</param>
        public sealed override async Task RemoveAsync(params DT[] objDatas)
        {
            #region Verify Parameters

            if (objDatas == null || objDatas.Length <= 0)
            {
                throw new Exception("objDatas is null or empty");
            }
            foreach (var obj in objDatas)
            {
                if (obj == null)
                {
                    throw new Exception("remove object data is null");
                }
                if (!obj.CanBeRemove)
                {
                    throw new Exception("object data cann't to be remove");
                }
            }

            #endregion

            var records = new List <IActivationRecord>(objDatas.Length);
            foreach (var data in objDatas)
            {
                var record = await ExecuteRemoveAsync(data).ConfigureAwait(false);//execute remove

                if (record == null)
                {
                    continue;
                }
                records.Add(record);
            }
            RepositoryEventBus.PublishRemove(GetType(), objDatas);
            WorkFactory.RegisterActivationRecord(records.ToArray());
        }
示例#28
0
        public static void Init()
        {
            #region Sys

            #region User

            //删除用户->删除用户&角色绑定
            RepositoryEventBus.SubscribeRemove <IUserRepository, IUserRoleRepository, User>(c => c.RemoveByFirst, c => c.RemoveByFirst);
            //删除用户->删除用户授权
            RepositoryEventBus.SubscribeRemove <IUserRepository, IUserAuthorizeRepository, User>(c => c.RemoveByFirst, c => c.RemoveByFirst);
            //查询用户->用户转换
            RepositoryEventBus.SubscribeQuery <IUserRepository, IAdminUserRepository, User>(c => c.LoadAdminUser);

            #endregion

            #region Role

            //删除角色->删除角色&用户绑定
            RepositoryEventBus.SubscribeRemove <IRoleRepository, IUserRoleRepository, Role>(c => c.RemoveBySecond, c => c.RemoveBySecond);
            //删除角色->删除角色授权
            RepositoryEventBus.SubscribeRemove <IRoleRepository, IRoleAuthorizeRepository, Role>(c => c.RemoveByFirst, c => c.RemoveByFirst);

            #endregion

            #region AuthorityOperationGroup

            //删除授权操作分组->删除分组下的授权操作
            RepositoryEventBus.SubscribeRemove <IAuthorityOperationGroupRepository, IAuthorityOperationRepository, AuthorityOperationGroup>(c => c.RemoveOperationByGroup, c => c.RemoveOperationByGroup);

            #endregion

            #region AuthorityOperation

            //删除授权操作->删除权限&授权操作绑定
            RepositoryEventBus.SubscribeRemove <IAuthorityOperationRepository, IAuthorityBindOperationRepository, AuthorityOperation>(c => c.RemoveBySecond, c => c.RemoveBySecond);

            #endregion

            #region AuthorityGroup

            //删除权限分组->删除分组下的权限数据
            RepositoryEventBus.SubscribeRemove <IAuthorityGroupRepository, IAuthorityRepository, AuthorityGroup>(c => c.RemoveAuthorityByGroup, c => c.RemoveAuthorityByGroup);

            #endregion

            #region Authority

            //删除权限->删除权限&授权操作绑定
            RepositoryEventBus.SubscribeRemove <IAuthorityRepository, IAuthorityBindOperationRepository, Authority>(c => c.RemoveByFirst, c => c.RemoveByFirst);
            //删除权限->删除角色授权
            RepositoryEventBus.SubscribeRemove <IAuthorityRepository, IRoleAuthorizeRepository, Authority>(c => c.RemoveBySecond, c => c.RemoveBySecond);
            //删除权限->删除用户授权
            RepositoryEventBus.SubscribeRemove <IAuthorityRepository, IUserAuthorizeRepository, Authority>(c => c.RemoveBySecond, c => c.RemoveBySecond);

            #endregion

            #endregion

            #region CTask

            #region server node

            //删除服务节点->删除服务节点&任务承载关系
            RepositoryEventBus.SubscribeObjectRemove <IServerNodeRepository, IJobServerHostRepository, ServerNode>(r => r.RemoveJobServerHostByServer);
            //删除服务节点->删除服务节点&执行计划承载关系
            RepositoryEventBus.SubscribeObjectRemove <IServerNodeRepository, ITriggerServerRepository, ServerNode>(r => r.RemoveTriggerServerByServer);

            #endregion

            #region job group

            //删除工作分组->删除工作分组下的工作
            RepositoryEventBus.SubscribeRemove <IJobGroupRepository, IJobRepository, JobGroup>(r => r.RemoveByJobGroup, r => r.RemoveByJobGroup);

            #endregion

            #region job

            //删除工作->删除工作&服务节点承载
            RepositoryEventBus.SubscribeObjectRemove <IJobRepository, IJobServerHostRepository, Job>(r => r.RemoveJobServerHostByJob);
            //删除工作->删除工作任务计划
            RepositoryEventBus.SubscribeObjectRemove <IJobRepository, ITriggerRepository, Job>(r => r.RemoveTriggerByJob);

            #endregion

            #region job server host

            //删除任务&服务承载->删除服务&任务执行计划
            RepositoryEventBus.SubscribeObjectRemove <IJobServerHostRepository, ITriggerServerRepository, JobServerHost>(r => r.RemoveTriggerServerByJobHost);

            #endregion

            #region trigger

            //保存执行计划->根据计划类型不同分别执行保存
            RepositoryEventBus.SubscribeSave <ITriggerRepository, ISimpleTriggerRepository, Trigger>(c => c.SaveSimpleTrigger);                  //简单执行计划
            RepositoryEventBus.SubscribeSave <ITriggerRepository, IExpressionTriggerRepository, Trigger>(c => c.SaveExpressionTrigger);          //自定义执行计划
            //保存执行计划->保存执行计划
            RepositoryEventBus.SubscribeSave <ITriggerRepository, ITriggerConditionRepository, Trigger>(c => c.SaveTriggerConditionFromTrigger); //自定义执行计划

            //删除执行计划->根据计划类型删除特定信息
            RepositoryEventBus.SubscribeObjectRemove <ITriggerRepository, ISimpleTriggerRepository, Trigger>(c => c.RemoveSimpleTrigger); //简单执行计划
            RepositoryEventBus.SubscribeSave <ITriggerRepository, IExpressionTriggerRepository, Trigger>(c => c.RemoveExpressionTrigger); //自定义执行计划
            //删除执行计划->删除附加条件
            RepositoryEventBus.SubscribeSave <ITriggerRepository, ITriggerConditionRepository, Trigger>(c => c.RemoveTriggerConditionByTrigger);
            //删除执行计划->删除计划&服务绑定
            RepositoryEventBus.SubscribeSave <ITriggerRepository, ITriggerServerRepository, Trigger>(c => c.RemoveTriggerServerByTrigger);

            //查询计划查询特定类型信息
            RepositoryEventBus.SubscribeQuery <ITriggerRepository, ISimpleTriggerRepository, Trigger>(c => c.LoadSimpleTrigger);
            RepositoryEventBus.SubscribeQuery <ITriggerRepository, IExpressionTriggerRepository, Trigger>(c => c.LoadExpressionTrigger);

            #endregion

            #endregion
        }