/// <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; }