/// <summary>
 ///     Constructor de la clase. Inicializa y valida los objetos con las tablas pasadas.
 /// </summary>
 /// <param name="oConnection">Objeto Conexión.</param>
 /// <param name="myColObjects">
 ///     Lista de objetos sobre los cuales se van a realizar las instrucciones DML, esto objetos deben ser pasado en el
 ///     orden en el que se
 ///     desea que actualicen a la base de datos.
 /// </param>
 internal ClsValidateObjects(ClsConnection oConnection, params Object[] myColObjects)
 {
     for (int i = 0; i < myColObjects.Length; i++)
     {
         this.oConnection = oConnection;
         this.myColObjects = new Dictionary<string, ClsObjectClass>();
         //Inicializamos las propiedades y los campos del objeto de la clase pasada. Al objeto dictionary le ponemos como clave principal en nombre de la tabla
         var myObjectClass = new ClsObjectClass(myColObjects[i]);
         this.myColObjects.Add(myObjectClass.STableName, myObjectClass);
         var myObjectTable = new Schema(myObjectClass.STableName, this.oConnection);
         myColTables = new Dictionary<string, Schema>();
         myColTables.Add(myObjectClass.STableName, myObjectTable);
         ColummnsValidate();
     }
 }
 internal String GetQuery(QueryType eQueryType, ClsObjectClass objCls)
 {
     return GetQuery(eQueryType, objCls, null);
 }
 /// <summary>
 ///     Obtenemos el Where para la tabla.
 /// </summary>
 /// <returns>Devuelve un string con la cadena instrucción Where.</returns>
 private String GetWhere(String sNameTable, ClsObjectClass objCls)
 {
     String sWhere = "";
     foreach (String sPK in myValidateTables[sNameTable].ColPrimaryKey)
     {
         Column myColumn = myValidateTables[sNameTable].GetColumn(sPK);
         if (!String.IsNullOrEmpty(sWhere)) sWhere += " AND ";
         sWhere += sPK + " = " + GetValueObject(myColumn, objCls[myColumn.NameColumn]);
     }
     return sWhere;
 }
        internal String GetQuery(QueryType eQueryType, ClsObjectClass objCls, Object obj)
        {
            String sFields = "", sValue = "", sComa = ",", sQuery = "", sWhereSelect = "";

            if (obj != null)
                objCls.MyObject = obj;

            foreach (Column myColumn in myValidateTables[objCls.STableName].ColColums)
            {
                //Recoremos la colección de objetos
                switch (eQueryType)
                {
                    case QueryType.DELETE:
                        break;
                    case QueryType.UPDATE:
                        sFields = myColumn.NameColumn;
                        sValue = GetValueObject(myColumn, objCls[myColumn.NameColumn]);
                        if (!String.IsNullOrEmpty(sQuery))
                            sQuery += sComa;
                        sQuery += sFields + "=" + sValue;
                        break;
                    case QueryType.INSERT:
                        if (!String.IsNullOrEmpty(sFields))
                            sFields += sComa;
                        if (!String.IsNullOrEmpty(sValue))
                            sValue += sComa;
                        sFields += myColumn.NameColumn;
                        sValue += GetValueObject(myColumn, objCls[myColumn.NameColumn]);
                        break;
                    case QueryType.SELECT:
                        if (!String.IsNullOrEmpty(sFields))
                            sFields += sComa;
                        if (objCls[myColumn.NameColumn] != null)
                        {
                            if (!String.IsNullOrEmpty(sWhereSelect))
                                sWhereSelect += " AND ";
                            sWhereSelect += myColumn.NameColumn + " = " +
                                            GetValueObject(myColumn, objCls[myColumn.NameColumn]);
                        }
                        sFields += myColumn.NameColumn;
                        break;
                }
            }

            switch (eQueryType)
            {
                case QueryType.DELETE:
                    sQuery = "DELETE FROM " + objCls.STableName + " WHERE " + GetWhere(objCls.STableName, objCls);
                    break;
                case QueryType.UPDATE:
                    sQuery = "UPDATE  " + objCls.STableName + " SET " + sQuery + " WHERE " +
                             GetWhere(objCls.STableName, objCls);
                    break;
                case QueryType.INSERT:
                    sQuery = "INSERT INTO  " + objCls.STableName + "(" + sFields + ")" + " VALUES (" + sValue + ")";
                    break;
                case QueryType.SELECT:
                    sQuery = "SELECT " + sFields + " FROM " + objCls.STableName + " WHERE " + sWhereSelect;
                    break;
            }

            return sQuery;
        }