Exemplo n.º 1
0
        /// <summary>
        /// Command를 수행하고, 결과를 XML 문자열로 반환합니다.
        /// </summary>
        /// <param name="repository">Repository</param>
        /// <param name="requestItem">요청 정보</param>
        /// <returns>Data 처리 결과의 XML 문자열</returns>
        public override string Execute(IAdoRepository repository, RequestItem requestItem)
        {
            Repository = repository;

            var method            = requestItem.Method;
            var requestParameters = requestItem.Parameters;

            if (IsDebugEnabled)
            {
                log.Debug("{0}를 수행합니다... method=[{1}], requestParameters=[{2}]",
                          GetType().FullName, method, requestParameters.CollectionToString());
            }

            var    query = repository.QueryProvider.GetQuery(method).AsText(method);
            string result;

            using (var cmd = repository.GetCommand(query, true)) {
                repository.ExecuteNonQuery(cmd, GetParameters(requestParameters));
                var outputs = AdoTool.GetOutputParameters(repository.Db, cmd);

                result = JsonTool.SerializeAsText(outputs);
            }

            if (IsDebugEnabled)
            {
                log.Debug("{0}를 완료했습니다. method=[{1}], requestParameters=[{2}]",
                          GetType().FullName, method, requestParameters.CollectionToString());
            }

            return(result);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Command를 수행하고, 결과를 XML 문자열로 반환합니다.
        /// </summary>
        /// <param name="repository">Repository</param>
        /// <param name="requestItem">요청 정보</param>
        /// <returns>Data 처리 결과의 XML 문자열</returns>
        public override string Execute(IAdoRepository repository, RequestItem requestItem) {
            Repository = repository;

            var method = requestItem.Method;
            var requestParameters = requestItem.Parameters;

            if(IsDebugEnabled)
                log.Debug("{0}를 수행합니다... method=[{1}], requestParameters=[{2}]",
                          GetType().FullName, method, requestParameters.CollectionToString());

            var query = repository.QueryProvider.GetQuery(method).AsText(method);
            string result;

            using(var cmd = repository.GetCommand(query, true)) {
                repository.ExecuteNonQuery(cmd, GetParameters(requestParameters));
                var outputs = AdoTool.GetOutputParameters(repository.Db, cmd);

                result = JsonTool.SerializeAsText(outputs);
            }

            if(IsDebugEnabled)
                log.Debug("{0}를 완료했습니다. method=[{1}], requestParameters=[{2}]",
                          GetType().FullName, method, requestParameters.CollectionToString());

            return result;
        }
Exemplo n.º 3
0
        //! ===============================================================================================

        /// <summary>
        /// 지정된 Command를 수행하고, RETURN_VALUE를 반환합니다.
        /// </summary>
        /// <param name="repository">IAdoRepository 인스턴스</param>
        /// <param name="cmd">실행할 DbCommand</param>
        /// <param name="parameters">인자</param>
        /// <returns>Procedure인 경우 return value를 반환한다. 반환값이 없으면 0을 반환한다.</returns>
        public static object ExecuteCommand(this IAdoRepository repository, DbCommand cmd, params IAdoParameter[] parameters)
        {
            cmd.ShouldNotBeNull("cmd");

            repository.ExecuteNonQuery(cmd, parameters);

            return(AdoTool.GetReturnValue(repository.Db, cmd, 0));
        }
Exemplo n.º 4
0
        //! ======================================================================================

        /// <summary>
        /// <see cref="IAdoRepository.ExecuteNonQuery(string, IAdoParameter[])"/>를 비동기 방식으로 수행합니다.
        /// </summary>
        /// <param name="repository">Repository</param>
        /// <param name="query">실행할 쿼리문 또는 Procedure Name</param>
        /// <param name="parameters">Parameters</param>
        /// <returns>영향받는 레코드수를 결과값으로 제공하는 Task</returns>
        public static Task <int> ExecuteNonQueryAsync(this IAdoRepository repository, string query, params IAdoParameter[] parameters)
        {
            query.ShouldNotBeWhiteSpace("query");

            if (IsDebugEnabled)
            {
                log.Debug("비동기 방식으로 쿼리를 수행합니다... query=[{0}], parameters=[{1}]", query, parameters.CollectionToString());
            }

            return(Task.Factory.StartNew(() => repository.ExecuteNonQuery(query, parameters)));
        }
Exemplo n.º 5
0
        /// <summary>
        /// PREQUERIES, POSTQUERIES에 있는 결과를 반환할 필요없는 단순 Query문을 실행합니다.
        /// </summary>
        /// <param name="ado">AdoRepository</param>
        /// <param name="queries">queries to execute</param>
        private static void ExecuteSimpleQuery(IAdoRepository ado, IEnumerable <XdsQuery> queries)
        {
            foreach (var query in queries.Where(q => q.Query.IsNotWhiteSpace()).Select(q => q.Query))
            {
                if (IsDebugEnabled)
                {
                    log.Debug("요청 처리 사전/사후 설정용 쿼리문을 수행합니다... query=[{0}]", query);
                }

                ado.ExecuteNonQuery(query);
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// PREQUERIES, POSTQUERIES에 있는 결과를 반환할 필요없는 단순 Query문을 실행합니다.
        /// </summary>
        /// <param name="ado">AdoRepository</param>
        /// <param name="queries">queries to execute</param>
        private static void ExecuteSimpleQuery(IAdoRepository ado, IEnumerable<XdsQuery> queries) {
            foreach(var query in queries.Where(q => q.Query.IsNotWhiteSpace()).Select(q => q.Query)) {
                if(IsDebugEnabled)
                    log.Debug("요청 처리 사전/사후 설정용 쿼리문을 수행합니다... query=[{0}]", query);

                ado.ExecuteNonQuery(query);
            }
        }