예제 #1
0
        /// <summary>
        /// Carrega os dados da tabela filha tem como base os relacionamento entre ela e a atual model, que s�o
        /// identificados pelo atributos <see cref="PersistenceForeignKeyAttribute"/>.
        /// </summary>
        /// <typeparam name="ClassChild">Tipo da classe que representa a tabela filha.</typeparam>
        /// <param name="parentObj">Objeto contendo as informa��es para fazer o relacionamento.</param>
        /// <param name="groupOfRelationship">Nome do grupo de relacionamento.</param>
        /// <param name="sortExpression">Informa��o sobre o propriedade a ser ordenada.</param>
        /// <param name="paging">Informa��es sobre a pagina��o do resultado.</param>
        /// <returns>Lista tipada do tipo da classe que representa a tabela filha.</returns>
        public GDAList <ClassChild> LoadDataForeignKeyParentToChild <ClassChild>(Model parentObj, string groupOfRelationship, InfoSortExpression sortExpression, InfoPaging paging) where ClassChild : new()
        {
            IBaseDAO <ClassChild> dao = GDAOperations.GetDAO <ClassChild>();
            List <GDAParameter>   parameters;
            string sql;

            MakeSqlForeignKeyParentToChild <ClassChild>(parentObj, groupOfRelationship, dao, out sql, out parameters, UserProvider);
            MethodInfo mi  = dao.GetType().GetMethod("GetSqlData", GDA.Common.Helper.ReflectionFlags.AllCriteria);
            object     ret = null;

            try
            {
                ret = mi.Invoke(dao, new object[] {
                    sql,
                    parameters,
                    sortExpression,
                    paging
                });
            }
            catch (Exception ex)
            {
                throw new GDAException(ex.InnerException);
            }
            return((GDAList <ClassChild>)ret);
        }
예제 #2
0
 /// <summary>
 /// Carrega os dados da tabela filha tem como base os relacionamento entre ela e a atual model, que s�o
 /// identificados pelo atributos <see cref="PersistenceForeignKeyAttribute"/>.
 /// </summary>
 /// <typeparam name="ClassChild">Tipo da classe que representa a tabela filha.</typeparam>
 /// <param name="parentObj">Objeto contendo as informa��es para fazer o relacionamento.</param>
 /// <param name="groupOfRelationship">Nome do grupo de relacionamento.</param>
 /// <param name="paging">Informa��es sobre a pagina��o do resultado.</param>
 /// <returns>Lista tipada do tipo da classe que representa a tabela filha.</returns>
 public GDAList <ClassChild> LoadDataForeignKeyParentToChild <ClassChild>(Model parentObj, string groupOfRelationship, InfoPaging paging) where ClassChild : new()
 {
     return(LoadDataForeignKeyParentToChild <ClassChild>(parentObj, groupOfRelationship, null, paging));
 }
예제 #3
0
 /// <summary>
 /// Carrega os dados com o retorno da query.
 /// </summary>
 /// <param name="sqlQuery">Query.</param>
 /// <param name="sortExpression">Express�o de ordena��o do comando sql.</param>
 /// <param name="infoPaging">Informa��es para pagina��o do resultado da query.</param>
 /// <param name="parameters">Parametros da query.</param>
 /// <returns>Lista com os dados do retorno da query.</returns>
 /// <exception cref="GDAColumnNotFoundException"></exception>
 /// <exception cref="GDAException"></exception>
 public GDACursor <Model> LoadDataWithSortExpression(GDASession session, string sqlQuery, System.Data.CommandType commandType, InfoSortExpression sortExpression, InfoPaging infoPaging, GDAParameter[] parameters)
 {
     return(LoadDataWithSortExpression(session, sqlQuery, null, commandType, sortExpression, infoPaging, parameters));
 }
예제 #4
0
 /// <summary>
 /// Carrega os dados com o retorno da query.
 /// </summary>
 /// <param name="session">Sess�o que ser� usado para executar a consulta.</param>
 /// <param name="sqlQuery">Query.</param>
 /// <param name="selectProperties">Nomes das propriedades que ser�o recuperadas na consulta separados por v�rgula.</param>
 /// <param name="sortExpression">Express�o de ordena��o do comando sql.</param>
 /// <param name="infoPaging">Informa��es para pagina��o do resultado da query.</param>
 /// <param name="parameters">Parametros da query.</param>
 /// <returns>Lista com os dados do retorno da query.</returns>
 /// <exception cref="GDAColumnNotFoundException"></exception>
 /// <exception cref="GDAException"></exception>
 public GDACursor <Model> LoadDataWithSortExpression(GDASession session, string sqlQuery, string selectProperties, System.Data.CommandType commandType, InfoSortExpression sortExpression, InfoPaging infoPaging, GDAParameter[] parameters)
 {
     return(new GDACursor <Model>(GetCursorParameters(session, sqlQuery, selectProperties, commandType, sortExpression, infoPaging, parameters)));
 }
예제 #5
0
 public GDAList <ClassChild> LoadDataForeignKeyParentToChild <ClassChild>(Model parentObj, string groupOfRelationship, InfoSortExpression sortProperty, InfoPaging paging) where ClassChild : new()
 {
     return(CurrentPersistenceObject.LoadDataForeignKeyParentToChild <ClassChild>(parentObj, groupOfRelationship, sortProperty, paging));
 }
예제 #6
0
 /// <summary>
 /// Carrega os dados com o retorno da query.
 /// </summary>
 /// <param name="sqlQuery">Query.</param>
 /// <param name="sortExpression">Express�o de ordena��o do comando sql.</param>
 /// <param name="infoPaging">Informa��es para pagina��o do resultado da query.</param>
 /// <param name="parameters">Parametros da query.</param>
 /// <returns>Lista com os dados do retorno da query.</returns>
 /// <exception cref="GDAColumnNotFoundException"></exception>
 /// <exception cref="GDAException"></exception>
 public GDACursor <Model> LoadDataWithSortExpression(string sqlQuery, InfoSortExpression sortExpression, InfoPaging infoPaging, GDAParameter[] parameters)
 {
     return(LoadDataWithSortExpression(sqlQuery, CommandType.Text, sortExpression, infoPaging, parameters));
 }
예제 #7
0
 /// <summary>
 /// Carrega as lista itens da tabela representada pelo tipo da classe
 /// submetida relacionados com a atual model. Será informado também o grupo
 /// no qual o relacionamento será carregado. Utiliza a estrura 1 para N.
 /// </summary>
 /// <typeparam name="ClassRelated">Tipo da classe que representa a tabela do relacionamento.</typeparam>
 /// <param name="paging">Informações sobre a paginação do resultado.</param>
 /// <returns>Lista tipada do tipo da classe que representa a tabela do relacionamento.</returns>
 public GDAList <ClassRelated> LoadRelationship1toN <ClassRelated>(InfoPaging paging) where ClassRelated : new()
 {
     return(GDAOperations.LoadRelationship1toN <ClassRelated>(this, null, null, paging));
 }
예제 #8
0
 internal GDAList <Model> GetSqlData(string sql, List <GDAParameter> parameters, InfoSortExpression sortExpression, InfoPaging paging)
 {
     return(CurrentPersistenceObject.LoadDataWithSortExpression(sql, sortExpression, paging, parameters.ToArray()));
 }
예제 #9
0
 /// <summary>
 /// Carrega as lista itens da tabela representada pelo tipo da classe
 /// submetida relacionados com a atual model. Ser� informado tamb�m o grupo
 /// no qual o relacionamento ser� carregado. Utiliza a estrura 1 para N.
 /// </summary>
 /// <typeparam name="ClassRelated">Tipo da classe que representa a tabela do relacionamento.</typeparam>
 /// <param name="model">Model na qual o itens est�o relacionados.</param>
 /// <param name="paging">Informa��es sobre a pagina��o do resultado.</param>
 /// <returns>Lista tipada do tipo da classe que representa a tabela do relacionamento.</returns>
 public static GDAList <ClassRelated> LoadRelationship1toN <ClassRelated>(object model, InfoPaging paging) where ClassRelated : new()
 {
     return(LoadRelationship1toN <ClassRelated>(model, null, null, paging));
 }
예제 #10
0
 /// <summary>
 /// Carrega as lista itens da tabela representada pelo tipo da classe
 /// submetida relacionados com a atual model. Será informado também o grupo
 /// no qual o relacionamento será carregado. Utiliza a estrura 1 para N.
 /// </summary>
 /// <typeparam name="ClassRelated">Tipo da classe que representa a tabela do relacionamento.</typeparam>
 /// <param name="sortProperty">Informação sobre o propriedade a ser ordenada.</param>
 /// <param name="paging">Informações sobre a paginação do resultado.</param>
 /// <returns>Lista tipada do tipo da classe que representa a tabela do relacionamento.</returns>
 public GDAList <ClassRelated> LoadRelationship1toN <ClassRelated>(InfoSortExpression sortProperty, InfoPaging paging) where ClassRelated : new()
 {
     return(GDAOperations.LoadRelationship1toN <ClassRelated>(this, null, sortProperty, paging));
 }
예제 #11
0
 /// <summary>
 /// Carrega as lista itens da tabela representada pelo tipo da classe
 /// submetida relacionados com a atual model. Ser� informado tamb�m o grupo
 /// no qual o relacionamento ser� carregado. Utiliza a estrura 1 para N.
 /// </summary>
 /// <typeparam name="ClassRelated">Tipo da classe que representa a tabela do relacionamento.</typeparam>
 /// <param name="model">Model na qual o itens est�o relacionados.</param>
 /// <param name="sortProperty">Informa��o sobre o propriedade a ser ordenada.</param>
 /// <param name="paging">Informa��es sobre a pagina��o do resultado.</param>
 /// <returns>Lista tipada do tipo da classe que representa a tabela do relacionamento.</returns>
 public static GDAList <ClassRelated> LoadRelationship1toN <ClassRelated>(object model, InfoSortExpression sortProperty, InfoPaging paging) where ClassRelated : new()
 {
     return(LoadRelationship1toN <ClassRelated>(model, null, sortProperty, paging));
 }
예제 #12
0
        /// <summary>
        /// Carrega as lista itens da tabela representada pelo tipo da classe
        /// submetida relacionados com a atual model. Ser� informado tamb�m o grupo
        /// no qual o relacionamento ser� carregado. Utiliza a estrura 1 para N.
        /// </summary>
        /// <typeparam name="ClassRelated">Tipo da classe que representa a tabela do relacionamento.</typeparam>
        /// <param name="model">Model na qual o itens est�o relacionados.</param>
        /// <param name="group">Nome do grupo de relacionamento.</param>
        /// <param name="sortProperty">Informa��o sobre o propriedade a ser ordenada.</param>
        /// <param name="paging">Informa��es sobre a pagina��o do resultado.</param>
        /// <returns>Lista tipada do tipo da classe que representa a tabela do relacionamento.</returns>
        public static GDAList <ClassRelated> LoadRelationship1toN <ClassRelated>(object model, string group, InfoSortExpression sortProperty, InfoPaging paging) where ClassRelated : new()
        {
            object     dao = GetDAO(model);
            MethodInfo mi  = dao.GetType().GetMethod("LoadDataForeignKeyParentToChild", new Type[] {
                model.GetType(),
                typeof(string),
                typeof(InfoSortExpression),
                typeof(InfoPaging)
            });

            if (mi == null)
            {
                throw new GDAException("DAO of model not suport LoadDataForeignKeyParentToChild.");
            }
            else
            {
                mi = mi.MakeGenericMethod(new Type[] {
                    typeof(ClassRelated)
                });
            }
            try
            {
                return((GDAList <ClassRelated>)mi.Invoke(dao, new object[] {
                    model,
                    group,
                    sortProperty,
                    paging
                }));
            }
            catch (Exception ex)
            {
                throw ex.InnerException;
            }
        }
예제 #13
0
 /// <summary>
 /// Executa a consulta e recupera o dados do resultado.
 /// </summary>
 /// <param name="session">Sessão onde será executada a consulta.</param>
 /// <param name="commandType">Tipo de comando.</param>
 /// <param name="commandTimeout"></param>
 /// <param name="paging"></param>
 /// <param name="sqlQuery">Consulta.</param>
 /// <param name="parameters">Parametros para a consulta.</param>
 /// <returns></returns>
 public GDADataRecordCursor LoadResult(GDASession session, CommandType commandType, int commandTimeout, string sqlQuery, InfoPaging paging, params GDAParameter[] parameters)
 {
     return(new GDADataRecordCursor(GetLoadResultCursorParameters(session, commandType, commandTimeout, sqlQuery, paging, parameters)));
 }
예제 #14
0
        /// <summary>
        /// Prepara o comando que será executado.
        /// </summary>
        /// <param name="session"></param>
        /// <param name="command">Instancia do comando que será preparada.</param>
        /// <param name="commandText">Texto do comando.</param>
        /// <param name="paging">Informações da paginação.</param>
        /// <param name="parameters">Parametros que serão processados.</param>
        /// <returns></returns>
        public string PrepareCommand(GDASession session, IDbCommand command, string commandText, InfoPaging paging, GDAParameter[] parameters)
        {
            if (parameters != null)
            {
                foreach (GDAParameter param in parameters)
                {
                    try
                    {
                        string newName = (param.ParameterName[0] != '?' ? param.ParameterName : UserProvider.ParameterPrefix + param.ParameterName.Substring(1) + UserProvider.ParameterSuffix);
                        commandText = commandText.Replace(param.ParameterName, newName);
                    }
                    catch (Exception ex)
                    {
                        throw new GDAException("Error on make parameter name '" + param.ParameterName + "'.", ex);
                    }
                    command.Parameters.Add(GDA.Helper.GDAHelper.ConvertGDAParameter(command, param, UserProvider));
                }
            }
            var provider = session != null ? session.ProviderConfiguration.Provider : GDASettings.DefaultProviderConfiguration.Provider;

            if (provider.SupportSQLCommandLimit && paging != null)
            {
                commandText = provider.SQLCommandLimit(!string.IsNullOrEmpty(paging.KeyFieldName) ? new List <Mapper> {
                    new Mapper(null, paging.KeyFieldName, DirectionParameter.InputOutput, PersistenceParameterType.Key, 0, null, null)
                } : null, commandText, paging.StartRow, paging.PageSize);
            }
            command.CommandText = commandText;
            return(commandText);
        }
예제 #15
0
        /// <summary>
        /// Recupera os parametros necessário para executar a consulta.
        /// </summary>
        /// <param name="session">Sessão onde será executada a consulta.</param>
        /// <param name="commandType"></param>
        /// <param name="commandTimeout"></param>
        /// <param name="paging"></param>
        /// <param name="sqlQuery">Consulta.</param>
        /// <param name="parameters">Parametros para a consulta.</param>
        /// <returns></returns>
        internal GDACursorParameters GetLoadResultCursorParameters(GDASession session, CommandType commandType, int commandTimeout, string sqlQuery, InfoPaging paging, params GDAParameter[] parameters)
        {
            IDbConnection conn = CreateConnection(session);
            IDbCommand    cmd  = CreateCommand(session, conn);

            cmd.CommandType = commandType;
            if (commandTimeout >= 0)
            {
                cmd.CommandTimeout = commandTimeout;
            }
            sqlQuery = PrepareCommand(session, cmd, sqlQuery, paging, parameters);
            return(new GDACursorParameters(UserProvider, session, conn, cmd, null, paging != null, paging == null ? 0 : paging.StartRow, paging == null ? 0 : paging.PageSize, (sender, e) => {
                for (int i = 0; i < cmd.Parameters.Count; i++)
                {
                    var dataParamter = (IDbDataParameter)cmd.Parameters[i];
                    if (dataParamter.Direction == ParameterDirection.Output || dataParamter.Direction == ParameterDirection.ReturnValue)
                    {
                        parameters[i].Value = ((IDbDataParameter)cmd.Parameters[i]).Value;
                    }
                }
            }));
        }