示例#1
0
        public IEnumerable <T> Query <T>(ICriteria criteria)
        {
            var connection = GetConnectionOfFunc(criteria.GetSPName());
            var objectList = new List <T>();

            using (SqlCommand cmd = new SqlCommand(criteria.GetSPName(), connection))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                MapValueToDBValue(cmd.Parameters, criteria);

                connection.Open();

                var data = cmd.ExecuteReader();

                while (data.Read())
                {
                    var newObject = Activator.CreateInstance <T>();
                    var type      = newObject.GetType();
                    foreach (var property in type.GetProperties())
                    {
                        if (data[property.Name] != DBNull.Value)
                        {
                            property.SetValue(newObject, data[property.Name]);
                        }
                    }

                    objectList.Add(newObject);
                }

                connection.Close();
            }
            return(objectList);
        }