/// <summary>
        /// 获取数据通过Command
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="command">SQL</param>
        /// <returns></returns>
        public static EntityCollection <T> Select <T>(string queryString, DataAccessParameterCollection parameters, CommandType cmdType)
            where T : EntityBase, new()
        {
            EntityCollection <T> result = new EntityCollection <T>();

            using (DataAccessBroker broker = DataAccessFactory.Instance())
            {
                IDataReader reader = broker.ExecuteReader(queryString, parameters, cmdType);

                int           fieldCount = reader.FieldCount;
                List <string> columns    = new List <string>();

                Dictionary <string, Type>   columnType = new Dictionary <string, Type>();
                Dictionary <string, string> nameChange = new Dictionary <string, string>();

                T        col    = new T();
                object[] values = new object[fieldCount];
                for (int i = 0; i < fieldCount; i++)
                {
                    columns.Add(reader.GetName(i));


                    for (int m = 0; m < col.OringTableSchema.AllColumnInfo.Count; m++)
                    {
                        if (col.OringTableSchema.AllColumnInfo[m].ColumnName.ToUpper() == reader.GetName(i).ToUpper())
                        {
                            columnType.Add(reader.GetName(i), col.OringTableSchema.AllColumnInfo[m].DataType);

                            nameChange.Add(reader.GetName(i), col.OringTableSchema.AllColumnInfo[m].ColumnName);
                        }
                    }
                }

                while (reader.Read())
                {
                    T t = new T();
                    reader.GetValues(values);
                    for (int i = 0; i < fieldCount; i++)
                    {
                        if (!(values[i] == DBNull.Value))
                        {
                            if (!columnType.ContainsKey(columns[i]))
                            {
                                continue;
                            }

                            if (values[i].GetType() == columnType[columns[i]])
                            {
                                t.SetData(nameChange[columns[i]], values[i]);
                            }
                            else
                            {
                                if (columnType[columns[i]] == Type.GetType("System.Int32"))
                                {
                                    t.SetData(nameChange[columns[i]], int.Parse(values[i].ToString()));
                                }
                                else if (columnType[columns[i]] == Type.GetType("System.Boolean"))
                                {
                                    if (values[i].ToString() == "0")
                                    {
                                        t.SetData(nameChange[columns[i]], false);
                                    }
                                    else
                                    {
                                        t.SetData(nameChange[columns[i]], true);
                                    }
                                }
                                else
                                {
                                    t.SetData(nameChange[columns[i]], values[i]);
                                }
                            }
                        }
                    }
                    result.Add(t);
                }
                reader.Dispose();
            }
            return(result);
        }