public DataContext(MetadataContext metadataContext) { _metadataContext = metadataContext; _tables = new TableCollection(this); _tables.Changed += member_Changed; _tableRelations = new TableRelationCollection(this); _tableRelations.Changed += member_Changed; _constants = new ConstantCollection(); _constants.Changed += member_Changed; _aggregates = new AggregateCollection(); _aggregates.AddDefaults(); _aggregates.Changed += member_Changed; _functions = new FunctionCollection(); _functions.AddDefaults(); _functions.Changed += member_Changed; }
/// <summary> /// Permite obtener los registros de varias tablas filtrando por diferentes campos /// </summary> /// <param name="nSchemaName">Esquema al que pertenece la tabla</param> /// <param name="nDataTableName">Nombre de la tabla</param> /// <param name="nKeys">Llave primaria del registro</param> /// <param name="nTableRelationList">Lista de relaciones con otras tablas</param> /// <param name="nMaxRows">Número máximo de registros a retornar</param> /// <param name="nResult">Define si la instrucción se ejecutó correctamente o no</param> /// <param name="nException">Exepción ocurrida al ejecutar la instrucción</param> /// <returns>Resultado de la consulta</returns> public DataTable DBQueryGet(string nSchemaName, string nDataTableName, List<Parameter> nKeys, TableRelationCollection nTableRelationList, int nMaxRows) { return null; }
/// <summary> /// Permite obtener los registros de varias tablas filtrando por diferentes campos /// </summary> /// <param name="nDataTable">Resultado de la consulta</param> /// <param name="nDataBaseCod">Base de datos a la que pertenece la tabla</param> /// <param name="nSchemaName">Esquema al que pertenece la tabla</param> /// <param name="nDataTableName">Nombre de la tabla</param> /// <param name="nKeys">Llave primaria del registro</param> /// <param name="nTableRelationList">Lista de relaciones con otras tablas</param> /// <param name="nMaxRows">Número máximo de registros a retornar</param> /// <param name="nResult">Define si la instrucción se ejecutó correctamente o no</param> /// <param name="nException">Exepción ocurrida al ejecutar la instrucción</param> public void DBQueryFill(ref DataTable nDataTable, string nDataBaseCod, string nSchemaName, string nDataTableName, List<Parameter> nKeys, TableRelationCollection nTableRelationList, int nMaxRows, ColumnEnumList nOrderByParams) { try { bool nResult = true; Exception nException = null; int index = 0; //Ejecutar la consulta principal var primaryRelations = new TableRelationCollection(); while (index < nTableRelationList.Count) { if (nTableRelationList[index].ForeignDataBaseCod != nDataBaseCod) break; primaryRelations.Add((TableRelation)nTableRelationList[index].Clone()); index++; } ManagerPool[nDataBaseCod].DataBase.DBQueryFill(ref nDataTable, "form", nSchemaName, nDataTableName, nKeys, primaryRelations, nMaxRows, nOrderByParams, out nResult, out nException); if (!nResult) throw nException; //TODO: Agregar consultas a relaciones a base de datos externas while (index < nTableRelationList.Count) { index++; } } catch (Exception ex) { throw new Exception("Error al recuperar los registros de la tabla [" + nDataBaseCod + "] " + nSchemaName + "." + nDataTableName + ", " + ex.Message, ex); } }
/// <summary> /// Construye la sentencia SQL Avanzada a una serie de tablas /// </summary> /// <param name="nTableAlias">Alias de la tabla</param> /// <param name="nSchemaName">Esquema al que pertenece la tabla</param> /// <param name="nDataTableName">Nombre de la tabla</param> /// <param name="nKeys">Campos de filtrado</param> /// <param name="nTableRelationList">Lista de relaciones con otras tablas</param> /// <param name="nMaxRows">Número máximo de registros a retornar, 0 para devolver todas la filas</param> /// <param name="nOrderByParams">Parametros de ordenación, null para no rodenar</param> /// <returns>Sentencia SQL</returns> public string BuildSqlQuery(string nTableAlias, string nSchemaName, string nDataTableName, List<Parameter> nKeys, TableRelationCollection nTableRelationList, int nMaxRows, ColumnEnumList nOrderByParams) { return new SqlBuilder(this).SqlQuery(nTableAlias, nSchemaName, nDataTableName, nKeys, nTableRelationList, nMaxRows, nOrderByParams); }
/// <summary> /// Permite obtener los registros de varias tablas filtrando por diferentes campos /// </summary> /// <param name="nTableAlias"></param> /// <param name="nSchemaName">Esquema al que pertenece la tabla</param> /// <param name="nDataTableName">Nombre de la tabla</param> /// <param name="nKeys">Llave primaria del registro</param> /// <param name="nTableRelationList">Lista de relaciones con otras tablas</param> /// <param name="nMaxRows">Número máximo de registros a retornar, 0 para devolver todas la filas</param> /// <param name="nOrderByParams">Parametros de ordenación, null para no rodenar</param> /// <param name="nResult">Define si la instrucción se ejecutó correctamente o no</param> /// <param name="nException">Exepción ocurrida al ejecutar la instrucción</param> /// <returns>Resultado de la consulta</returns> public DataTable DBQueryGet(string nTableAlias, string nSchemaName, string nDataTableName, List<Parameter> nKeys, TableRelationCollection nTableRelationList, int nMaxRows, ColumnEnumList nOrderByParams, out bool nResult, out Exception nException) { nResult = true; nException = null; try { return ExecuteQueryGet(BuildSqlQuery(nTableAlias, nSchemaName, nDataTableName, nKeys, nTableRelationList, nMaxRows, nOrderByParams)); } catch (Exception ex) { nResult = false; nException = new Exception( "Error al recuperar los registros de la tabla " + nSchemaName + "." + nDataTableName + ", " + ex.Message, ex); return null; } }
/// <summary> /// Permite obtener los registros de varias tablas filtrando por diferentes campos /// </summary> /// <param name="nTableAlias"></param> /// <param name="nSchemaName">Esquema al que pertenece la tabla</param> /// <param name="nDataTableName">Nombre de la tabla</param> /// <param name="nKeys">Llave primaria del registro</param> /// <param name="nTableRelationList">Lista de relaciones con otras tablas</param> /// <param name="nResult">Define si la instrucción se ejecutó correctamente o no</param> /// <param name="nException">Exepción ocurrida al ejecutar la instrucción</param> /// <returns>Resultado de la consulta</returns> public DataTable DBQueryGet(string nTableAlias, string nSchemaName, string nDataTableName, List<Parameter> nKeys, TableRelationCollection nTableRelationList, out bool nResult, out Exception nException) { return DBQueryGet(nTableAlias, nSchemaName, nDataTableName, nKeys, nTableRelationList, 0, null, out nResult, out nException); }
/// <summary> /// Permite obtener los registros de varias tablas filtrando por diferentes campos /// </summary> /// <param name="nDataTable">Resultado de la consulta</param> /// <param name="nTableAlias"></param> /// <param name="nSchemaName">Esquema al que pertenece la tabla</param> /// <param name="nDataTableName">Nombre de la tabla</param> /// <param name="nKeys">Llave primaria del registro</param> /// <param name="nTableRelationList">Lista de relaciones con otras tablas</param> /// <param name="nResult">Define si la instrucción se ejecutó correctamente o no</param> /// <param name="nException">Exepción ocurrida al ejecutar la instrucción</param> public void DBQueryFill(ref DataTable nDataTable, string nTableAlias, string nSchemaName, string nDataTableName, List<Parameter> nKeys, TableRelationCollection nTableRelationList, out bool nResult, out Exception nException) { DBQueryFill(ref nDataTable, nTableAlias, nSchemaName, nDataTableName, nKeys, nTableRelationList, 0, null, out nResult, out nException); }