Beispiel #1
0
        /// <summary>
        /// 与条件
        /// </summary>
        /// <param name="restrain">另一条件</param>
        /// <returns>新的条件</returns>
        public Restrain And(Restrain restrain)
        {
            if (restrain == null)
            {
                throw new ArgumentNullException("方法Add不接受restrain为空的值");
            }
            Restrain _restrain = Restrain.And(this, restrain);

            return(_restrain);
        }
Beispiel #2
0
        /// <summary>
        /// 非条件
        /// </summary>
        /// <param name="restrain">条件</param>
        /// <returns>新的条件</returns>
        public static Restrain Not(Restrain restrain)
        {
            if (restrain == null)
            {
                throw new ArgumentNullException("Not方法的restrain参数不允许为空");
            }
            Restrain _restrain = new Restrain();

            _restrain.Params = restrain.Params;
            _restrain.SqlStr = String.Format("AND NOT (1=1 {0})", restrain.SqlStr);
            return(_restrain);
        }
Beispiel #3
0
        /// <summary>
        /// 等于条件
        /// </summary>
        /// <param name="key">类型的属性</param>
        /// <param name="value">条件值</param>
        /// <returns>条件</returns>
        public static Restrain Eq(string key, object value)
        {
            if (String.IsNullOrWhiteSpace(key))
            {
                throw new ArgumentException("Eq方法不接受空白或者空值的Key参数");
            }
            Restrain restrain  = new Restrain();
            string   paramCode = String.Format("__PARAMCODE__{0}_{1}", key.Trim(), Counter);

            restrain.Params.Add(paramCode, value);
            restrain.SqlStr = String.Format("AND {0} = {1}", key, paramCode);
            return(restrain);
        }
Beispiel #4
0
        /// <summary>
        /// 与条件
        /// </summary>
        /// <param name="restrain1">条件1</param>
        /// <param name="restrain2">条件2</param>
        /// <returns>新的条件</returns>
        public static Restrain And(Restrain restrain1, Restrain restrain2)
        {
            if (restrain1 == null || restrain2 == null)
            {
                throw new ArgumentNullException("And方法的restrain参数不允许为空");
            }
            Restrain _restrain = new Restrain();

            foreach (KeyValuePair <string, object> de in restrain1.Params)
            {
                _restrain.Params.Add(de.Key, de.Value);
            }
            foreach (KeyValuePair <string, object> de in restrain2.Params)
            {
                _restrain.Params.Add(de.Key, de.Value);
            }
            _restrain.SqlStr = String.Format("AND (1=1 {0}) AND (1=1 {1})", restrain1.SqlStr, restrain2.SqlStr);
            return(_restrain);
        }
Beispiel #5
0
        /// <summary>
        /// 存在于条件
        /// </summary>
        /// <param name="key">类型的属性</param>
        /// <param name="values">条件值</param>
        /// <returns>条件</returns>
        public static Restrain In(string key, params object[] values)
        {
            if (String.IsNullOrWhiteSpace(key))
            {
                throw new ArgumentException("In方法不接受空白或者空值的Key参数");
            }
            Restrain      restrain      = new Restrain();
            StringBuilder stringBuilder = new StringBuilder();

            foreach (object value in values)
            {
                string paramCode = String.Format("__PARAMCODE__{0}_{1}", key.Trim(), Counter);
                stringBuilder.AppendFormat(" {0},", paramCode);
                restrain.Params.Add(paramCode, value);
            }
            if (stringBuilder.Length > 0)
            {
                stringBuilder.Remove(stringBuilder.Length - 1, 1);
            }
            restrain.SqlStr = String.Format("AND {0} IN ({1})", key, stringBuilder);
            return(restrain);
        }
Beispiel #6
0
        public virtual T GetById(string tran, object id)
        {
            string message        = "";
            Type   typ            = typeof(T);
            string primaryKeyName = "";

            foreach (PropertyInfo pi in typ.GetProperties())
            {
                if (pi.GetCustomAttribute <PrimaryKeyAttribute>() != null)
                {
                    primaryKeyName = pi.Name;
                    break;
                }
            }
            if (String.IsNullOrWhiteSpace(primaryKeyName))
            {
                throw new FieldAccessException();
            }
            IList <T> dataSet = sqlMaker.Select(tran, OrderBy.GetDefaultOrderBy <T>(), new Limit(), out message, Restrain.Eq(primaryKeyName, id));

            if (dataSet.Count > 0)
            {
                return(dataSet.First());
            }
            else
            {
                return(null);
            }
        }