예제 #1
0
        /// <summary>
        /// <paramref name="oraCommand"/>를 비동기 방식으로 실행하여, 결과 셋을 <see cref="Task{DataTable}"/>로 반환합니다.
        /// </summary>
        public static Task <OracleDataTable> ExecuteDataTableAsync(this EnterpriseLibrary.OracleDatabase oraDatabase,
                                                                   OracleCommand oraCommand,
                                                                   int firstResult,
                                                                   int maxResults,
                                                                   params IAdoParameter[] parameters)
        {
            oraDatabase.ShouldNotBeNull("oraDatabase");
            oraCommand.ShouldNotBeNull("oraCommand");

            firstResult.ShouldBePositiveOrZero("firstResult");
            maxResults.ShouldBePositiveOrZero("maxResults");

            if (IsDebugEnabled)
            {
                log.Debug("비동기 방식으로 ExecuteDataTable을 실행합니다.. CommandText=[{0}], firstResult=[{1}], maxResults=[{2}], Parameters=[{3}]",
                          oraCommand.CommandText, firstResult, maxResults, parameters.CollectionToString());
            }

            return
                (ExecuteReaderAsync(oraDatabase, oraCommand, parameters)
                 .ContinueWith(readerTask => (OracleDataTable)AdoTool.BuildDataTableFromDataReader(oraDatabase,
                                                                                                   readerTask.Result,
                                                                                                   () => new OracleDataTable(),
                                                                                                   firstResult,
                                                                                                   maxResults),
                               TaskContinuationOptions.ExecuteSynchronously));
        }