public virtual T QueryObject <T>(String sql, params object[] args) where T : new()
        {
            T schemaClass = default(T);
            DatabaseDataReader reader;
            QueryString        query  = this.Format(sql, args);
            DBResult           result = Query(query, out reader);

            if (result.ResultCode == DBResult.Result.Success)
            {
                using (reader)
                {
                    if (reader.Read())
                    {
                        schemaClass = new T();
                        if (schemaClass is ILoadable)
                        {
                            ((ILoadable)schemaClass).LoadFrom(reader);
                        }
                        else
                        {
                            DataReaderConverter.LoadClassFromDataReader(schemaClass, reader);
                        }
                    }
                }
            }
            return(schemaClass);
        }
        public virtual List <T> QueryList <T>(String sql, params object[] args) where T : new()
        {
            List <T>           retVal = new List <T>();
            DatabaseDataReader reader;
            QueryString        query  = this.Format(sql, args);
            DBResult           result = Query(query, out reader, DefaultTimeout);

            if (result.ResultCode == DBResult.Result.Success)
            {
                using (reader)
                {
                    bool isLoadable = new T() is ILoadable;

                    while (reader.Read())
                    {
                        T schemaClass = new T();

                        if (isLoadable)
                        {
                            ((ILoadable)schemaClass).LoadFrom(reader);
                        }
                        else
                        {
                            DataReaderConverter.LoadClassFromDataReader(schemaClass, reader);
                        }

                        retVal.Add(schemaClass);
                    }
                    //reader.Close();
                }
            }
            return(retVal);
        }
 public void Load <T>(T objToLoad)
 {
     if (objToLoad is ILoadable)
     {
         ((ILoadable)objToLoad).LoadFrom(this);
     }
     else
     {
         DataReaderConverter.LoadClassFromDataReader(objToLoad, this);
     }
 }
        public T Create <T>() where T : new()
        {
            T retVal = new T();

            if (retVal is ILoadable)
            {
                ((ILoadable)retVal).LoadFrom(this);
            }
            else
            {
                DataReaderConverter.LoadClassFromDataReader(retVal, this);
            }
            return(retVal);
        }