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)) {
                var scalar = repository.ExecuteScalar(cmd, GetParameters(requestParameters));
                result = JsonTool.SerializeAsText(scalar);
            }

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

            return(result);
        }
Exemplo n.º 2
0
        //! ======================================================================================

        /// <summary>
        /// <see cref="IAdoRepository.ExecuteScalar(string,IAdoParameter[])"/> 를
        /// 비동기 방식으로 수행하는 <see cref="Task{TResult}"/>를 빌드합니다.
        /// </summary>
        /// <param name="repository"><see cref="IAdoRepository"/> 인스턴스</param>
        /// <param name="query">실행할 쿼리 문</param>
        /// <param name="parameters">파라미터 정보</param>
        /// <returns>Scalar 값을 결과값으로 가진 Task</returns>
        public static Task <object> ExecuteScalarAsync(this IAdoRepository repository, string query, params IAdoParameter[] parameters)
        {
            repository.ShouldNotBeNull("repository");
            query.ShouldNotBeWhiteSpace("query");

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

            return(Task.Factory.StartNew(() => repository.ExecuteScalar(query, parameters)));
        }
Exemplo n.º 3
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)) {
                var scalar = repository.ExecuteScalar(cmd, GetParameters(requestParameters));
                result = JsonTool.SerializeAsText(scalar);
            }

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

            return result;
        }