示例#1
0
		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);
            }
        }
示例#4
0
 /// <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);
 }
示例#5
0
        /// <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;
            }
        }
示例#6
0
 /// <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);
 }
示例#7
0
 /// <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);
 }