Ejemplo n.º 1
0
        /// <summary>
        /// Remove Objects
        /// </summary>
        /// <param name="entityList">datas</param>
        protected async Task RemoveAsync(IEnumerable <ET> entityList)
        {
            Type entityType = typeof(ET);
            var  keys       = QueryConfig.GetPrimaryKeys(entityType);

            if (keys.IsNullOrEmpty())
            {
                throw new Exception(string.Format("Type:{0} isn't set primary keys", entityType.FullName));
            }
            IQuery         query        = QueryFactory.Create();
            List <dynamic> keyValueList = new List <dynamic>();

            foreach (ET entity in entityList)
            {
                if (keys.Count == 1)
                {
                    keyValueList.Add(entity.GetPropertyValue(keys.ElementAt(0)));
                }
                else
                {
                    IQuery entityQuery = QueryFactory.Create();
                    foreach (var key in keys)
                    {
                        entityQuery.And(key, CriteriaOperator.Equal, entity.GetPropertyValue(key));
                    }
                    query.Or(entityQuery);
                }
            }
            if (keys.Count == 1)
            {
                query.In(keys.ElementAt(0), keyValueList);
            }
            UnitOfWork.UnitOfWork.RegisterCommand(await dataAccess.DeleteAsync(query).ConfigureAwait(false));
        }
        /// <summary>
        /// set command values
        /// </summary>
        /// <param name="cmd">command</param>
        /// <param name="values">values</param>
        void SetCommand(ICommand cmd, Dictionary <string, dynamic> values = null)
        {
            if (cmd == null)
            {
                return;
            }
            Type type = typeof(T);

            //对象名称
            cmd.ObjectName = QueryConfig.GetObjectName(type);

            #region 主键值

            var primaryKeys = QueryConfig.GetPrimaryKeys(type);
            cmd.ObjectKeys = primaryKeys;
            if (primaryKeys != null && values != null && values.Count > 0)
            {
                SortedDictionary <string, dynamic> primaryValues = new SortedDictionary <string, dynamic>();
                foreach (var key in primaryKeys)
                {
                    if (values.ContainsKey(key))
                    {
                        primaryValues.Add(key, values[key]);
                    }
                }
                cmd.ObjectKeyValues = primaryValues;
            }

            #endregion
        }
Ejemplo n.º 3
0
        /// <summary>
        /// get object primary key value
        /// </summary>
        /// <returns></returns>
        internal Dictionary <string, dynamic> GetPrimaryKeyValues()
        {
            var primaryKeys = QueryConfig.GetPrimaryKeys(typeof(T));

            if (primaryKeys == null || primaryKeys.Count <= 0)
            {
                return(new Dictionary <string, dynamic>(0));
            }
            Dictionary <string, dynamic> values = new Dictionary <string, dynamic>(primaryKeys.Count);

            foreach (var key in primaryKeys)
            {
                if (valueDic.ContainsKey(key))
                {
                    values.Add(key, valueDic[key]);
                }
            }
            return(values);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Modify Objects
        /// </summary>
        /// <param name="datas">datas</param>
        protected async Task ModifyAsync(params ET[] datas)
        {
            Type entityType = typeof(ET);
            var  keys       = QueryConfig.GetPrimaryKeys(entityType);

            if (keys.IsNullOrEmpty())
            {
                throw new Exception(string.Format("Type:{0} is not set primary keys", entityType.FullName));
            }
            foreach (var data in datas)
            {
                IQuery query = QueryFactory.Create();
                foreach (var key in keys)
                {
                    query.Equal(key, data.GetPropertyValue(key));
                }
                UnitOfWork.UnitOfWork.RegisterCommand(await dataAccess.ModifyAsync(data, query).ConfigureAwait(false));
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Execute Remove
        /// </summary>
        /// <param name="query">query model</param>
        protected virtual async Task ExecuteRemoveAsync(IQuery query)
        {
            if (query == null)
            {
                query = QueryFactory.Create();
            }
            Type entityType = typeof(ET);
            var  keys       = QueryConfig.GetPrimaryKeys(entityType);

            if (keys.IsNullOrEmpty())
            {
                throw new Exception(string.Format("Type:{0} isn't set primary keys", entityType.FullName));
            }
            var dataList = GetList(query);

            if (dataList == null || dataList.Count <= 0)
            {
                return;
            }
            await RemoveAsync(dataList.ToArray()).ConfigureAwait(false);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// get primary keys with cache
        /// </summary>
        /// <returns></returns>
        public string GetPrimaryCacheKey(bool includeObjectName = true)
        {
            SortedSet <string> primaryKeys = QueryConfig.GetPrimaryKeys(typeof(T));

            return(GenerateCacheKey(primaryKeys, includeObjectName));
        }