public List <T> Select <T>(string sql, List <CommandParameter> parameterList) where T : class
        {
            DataSet  ds       = ExecuteDataSet(sql, parameterList, new string[] { "Table" });
            List <T> dataList = RelationalMappingUnity.Select <T>(ds.Tables[0]);

            return(dataList);
        }
        public void UpdateList(List <object> objList)
        {
            if (objList == null)
            {
                return;
            }

            List <SqlExpression> sqlExpressionList = new List <SqlExpression>();

            SqlExpressionArgs args = new SqlExpressionArgs();

            args.Type = SqlExpressionType.Update;

            foreach (var item in objList)
            {
                if (item == null)
                {
                    Debug.Assert(false, "insert obj 为 null");
                    continue;
                }

                SqlExpression sqlExpression = RelationalMappingUnity.GetSqlExpression(item, args);
                sqlExpressionList.Add(sqlExpression);
            }

            ExcuteSqlExpression(sqlExpressionList);
        }
        public List <T> Select <T>(string sql) where T : class
        {
            DataSet  ds       = ExecuteDataSet(sql);
            List <T> dataList = RelationalMappingUnity.Select <T>(ds.Tables[0]);

            return(dataList);
        }
        public List <T> Select <T>(List <AttachedWhereItem> attachedWhere, SqlExpressionPagingArgs pagingArgs) where T : class, new()
        {
            SqlExpressionArgs args = new SqlExpressionArgs();

            args.Type          = SqlExpressionType.Select;
            args.GenerateWhere = false;
            args.AttachedWhere = attachedWhere;
            args.PagingArgs    = pagingArgs;

            //不能用 default(T) ,会是null
            SqlExpression sqlExpression = RelationalMappingUnity.GetSqlExpression(new T(), args);

            DataSet  ds       = ExcuteDataSetSqlExpression(sqlExpression);
            List <T> dataList = RelationalMappingUnity.Select <T>(ds.Tables[0]);

            if (pagingArgs != null)
            {
                if (ds.Tables.Count > 1)
                {
                    pagingArgs.TotalRow = int.Parse(ds.Tables[1].Rows[0][0].ToString());
                }
                else
                {
                    pagingArgs.TotalRow = ds.Tables[0].Rows.Count;
                }
                pagingArgs.TotalPage = pagingArgs.TotalRow / pagingArgs.PageSize;
                if (pagingArgs.TotalRow % pagingArgs.PageSize > 0)
                {
                    pagingArgs.TotalPage++;
                }
            }

            return(dataList);
        }
        public bool Fill <T>(object obj, string table, Dictionary <string, object> attachedWhere) where T : class, new()
        {
            SqlExpressionArgs args = new SqlExpressionArgs();

            args.Table = table;
            args.Type  = SqlExpressionType.Select;
            if (attachedWhere == null)
            {
                args.GenerateWhere = true;
            }
            else
            {
                args.GenerateWhere = false;
                args.AttachedWhere = AttachedWhereItem.Parse(attachedWhere);
            }

            //不能用 default(T) ,会是null
            SqlExpression sqlExpression = RelationalMappingUnity.GetSqlExpression(obj, args);

            DataSet  ds       = ExcuteDataSetSqlExpression(sqlExpression);
            List <T> dataList = RelationalMappingUnity.Select <T>(ds.Tables[0]);

            Debug.Assert(dataList.Count <= 1, "Fill 时取出的记录大于1条");

            if (dataList.Count != 1)
            {
                return(false);
            }

            T dataObj = dataList[0];

            ReflectionHelper.Inject(obj, dataObj);

            return(true);
        }
        public int Remove(object obj)
        {
            if (obj == null)
            {
                return(0);
            }

            SqlExpressionArgs args = new SqlExpressionArgs();

            args.Type = SqlExpressionType.Delete;
            SqlExpression sqlExpression = RelationalMappingUnity.GetSqlExpression(obj, args);

            return(ExcuteSqlExpression(sqlExpression));
        }
        /// <summary>
        /// 插入失败以异常形式抛出
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public bool Insert(object obj)
        {
            if (obj == null)
            {
                return(false);
            }

            SqlExpressionArgs args = new SqlExpressionArgs();

            args.Type = SqlExpressionType.Insert;

            SqlExpression sqlExpression = RelationalMappingUnity.GetSqlExpression(obj, args);

            return(ExcuteSqlExpression(sqlExpression) == 1);
        }
        public int Update(object obj, string table, string excludeFields)
        {
            if (obj == null)
            {
                return(0);
            }

            SqlExpressionArgs args = new SqlExpressionArgs();

            args.Table         = table;
            args.Type          = SqlExpressionType.Update;
            args.ExcludeFields = excludeFields;
            SqlExpression sqlExpression = RelationalMappingUnity.GetSqlExpression(obj, args);

            return(ExcuteSqlExpression(sqlExpression));
        }