public bool Fill <T>(T model) where T : class { ModelInfo mi = GetModelInfo <T>(); string format = "select * from {0} where {1}"; object fieldValue = ModelProperty <T> .GetValue(model as T, mi.IDFieldName); CheckIDField <T>(model, mi, fieldValue); List <MySqlParameter> list = new List <MySqlParameter> { new MySqlParameter("@" + mi.IDFieldName, fieldValue) }; format = string.Format(format, mi.TableName, mi.IDFieldName + "=@" + mi.IDFieldName); using (MySqlDataReader reader = MySqlHandler.ExecuteReader(mi.Conn, format, list.ToArray())) { while (reader.Read()) { foreach (PropertyInfo info in model.GetType().GetProperties()) { object propertyValue; if (DBNull.Value != reader[info.Name]) { propertyValue = reader[info.Name]; ModelProperty <T> .SetValue(model as T, info.Name, propertyValue); } } return(true); // Only return the first data } } return(false); }