示例#1
0
 /// <summary>
 /// DbCommand를 실행해 얻은 DataReader를 Converter를 통해 지정된 형식의 인스턴스를 만든다.
 /// </summary>
 /// <typeparam name="T">Type of persistent object</typeparam>
 /// <param name="repository">IAdoRepository 인스턴스</param>
 /// <param name="mapFunc">IDataReader의 한 레코드인 IDataRecord 정보를 가지고, Persistent Object를 만들 Converter</param>
 /// <param name="cmd">Instance of DbCommand to executed</param>
 /// <param name="parameters">Parameters for DbCommand to execute</param>
 /// <returns>Collection of Persistent Object</returns>
 public static Task <IList <T> > ExecuteInstanceAsync <T>(this IAdoRepository repository,
                                                          Func <IDataReader, T> mapFunc,
                                                          DbCommand cmd,
                                                          params IAdoParameter[] parameters)
 {
     return(Task.Factory.StartNew(() => repository.ExecuteInstance <T>(mapFunc, cmd, parameters)));
 }
示例#2
0
        /// <summary>
        /// <see cref="ExecuteInstance{T}(IAdoRepository,System.Func{System.Data.IDataReader,T},DbCommand,int,int,IAdoParameter[])"/>을 비동기적으로 수행합니다.
        /// </summary>
        /// <typeparam name="T">결과 셋으로 표현할 엔티티의 수형</typeparam>
        /// <param name="repository"><see cref="IAdoRepository"/></param>
        /// <param name="nameMap">DataReader 컬럼명 - Class 속성명의 매핑 정보</param>
        /// <param name="additionalMapping">추가적인 매핑 함수</param>
        /// <param name="query">실행할 SQL문 또는 Procedure Name</param>
        /// <param name="pageIndex">결과셋의 Page Index (0부터 시작)</param>
        /// <param name="pageSize">결과셋 Paging 시의 Page Size</param>
        /// <param name="parameters">패러미터</param>
        /// <returns>매핑한 엔티티 컬렉션을 결과값으로 가지는 Task</returns>
        public static Task <IPagingList <T> > ExecuteInstanceAsync <T>(this IAdoRepository repository,
                                                                       INameMap nameMap,
                                                                       Action <IDataReader, T> additionalMapping,
                                                                       string query,
                                                                       int pageIndex,
                                                                       int pageSize,
                                                                       params IAdoParameter[] parameters) where T : class
        {
            nameMap.ShouldNotBeNull("nameMap");
            query.ShouldNotBeWhiteSpace("query");

            if (IsDebugEnabled)
            {
                log.Debug("비동기적으로 ExecuteReader<{0}>()을 수행하고, 결과를 IList<{0}>으로 매핑합니다... query=[{1}]", typeof(T).FullName, query);
            }

            return(Task.Factory.StartNew(() => {
                using (var cmd = repository.GetCommand(query))
                    return repository.ExecuteInstance <T>(nameMap,
                                                          additionalMapping,
                                                          cmd,
                                                          pageIndex,
                                                          pageSize,
                                                          parameters);
            }));
        }
示例#3
0
 /// <summary>
 /// Execute DbCommand, Build instance of specified type from IDataReader using Persister
 /// </summary>
 /// <typeparam name="T">Type of persistent object</typeparam>
 /// <param name="repository">IAdoRepository 인스턴스</param>
 /// <param name="persister">Persister from IDataReader</param>
 /// <param name="cmd">Instance of DbCommand</param>
 /// <param name="parameters">Parameters for DbCommand to execute</param>
 /// <returns>List of Persistent Object</returns>
 public static Task <IList <T> > ExecuteInstanceAsync <T>(this IAdoRepository repository,
                                                          IReaderPersister <T> persister,
                                                          DbCommand cmd,
                                                          params IAdoParameter[] parameters) where T : class
 {
     return(Task.Factory.StartNew(() => repository.ExecuteInstance <T>(persister, cmd, parameters)));
 }
示例#4
0
 ///<summary>
 /// DbCommand를 실행해 얻은 DataReader를 통해 지정된 형식의 인스턴스를 만든다.
 ///</summary>
 /// <typeparam name="T">Type of Persistent object</typeparam>
 /// <param name="repository">IAdoRepository 인스턴스</param>
 /// <param name="nameMapper">컬럼명과 속성명 Mapper</param>
 /// <param name="additionalMapping">추가적인 매핑 함수</param>
 /// <param name="cmd">실행할 DbCommand</param>
 /// <param name="parameters">Procedure 인자</param>
 /// <returns>Collection of Persistet object</returns>
 public static Task <IList <T> > ExecuteInstanceAsync <T>(this IAdoRepository repository,
                                                          INameMapper nameMapper,
                                                          Action <IDataReader, T> additionalMapping,
                                                          DbCommand cmd,
                                                          params IAdoParameter[] parameters) where T : class
 {
     return(Task.Factory.StartNew(() => repository.ExecuteInstance <T>(nameMapper, additionalMapping, cmd, parameters)));
 }
示例#5
0
 /// <summary>
 /// 지정된 Command를 실행하여, 결과 셋을 Paging하여, 지정된 Page에 해당하는 정보만 Persistent Object로 빌드하여 반환한다.
 /// </summary>
 /// <typeparam name="T">Persistent Object의 수형</typeparam>
 /// <param name="repository">IAdoRepository 인스턴스</param>
 /// <param name="persister">IDataReader로부터 Persistent Object를 빌드하는 Persister</param>
 /// <param name="cmd">실행할 DbCommand</param>
 /// <param name="pageIndex">결과셋의 Page Index (0부터 시작)</param>
 /// <param name="pageSize">결과셋 Paging 시의 Page Size</param>
 /// <param name="parameters">DbCommand 실행시의 Parameter 정보</param>
 /// <returns>Paging된 Persistent Object의 List</returns>
 public static IPagingList <T> ExecuteInstance <T>(this IAdoRepository repository,
                                                   IReaderPersister <T> persister,
                                                   DbCommand cmd,
                                                   int pageIndex,
                                                   int pageSize,
                                                   params IAdoParameter[] parameters)
 {
     return(repository.ExecuteInstance <T>(persister.Persist, cmd, pageIndex, pageSize, parameters));
 }
示例#6
0
 /// <summary>
 /// 지정된 Command를 실행하여, 결과 셋을 Paging하여, 지정된 Page에 해당하는 정보만 Persistent Object로 빌드하여 반환한다.
 /// </summary>
 /// <typeparam name="T">Persistent Object의 수형</typeparam>
 /// <param name="repository">IAdoRepository 인스턴스</param>
 /// <param name="persister">IDataReader로부터 Persistent Object를 빌드하는 Persister</param>
 /// <param name="cmd">실행할 DbCommand</param>
 /// <param name="pageIndex">결과셋의 Page Index (0부터 시작)</param>
 /// <param name="pageSize">결과셋 Paging 시의 Page Size</param>
 /// <param name="parameters">DbCommand 실행시의 Parameter 정보</param>
 /// <returns>Paging된 Persistent Object의 List</returns>
 public static Task <IPagingList <T> > ExecuteInstanceAsync <T>(this IAdoRepository repository,
                                                                IReaderPersister <T> persister,
                                                                DbCommand cmd,
                                                                int pageIndex,
                                                                int pageSize,
                                                                params IAdoParameter[] parameters)
 {
     return(Task.Factory.StartNew(() => repository.ExecuteInstance <T>(persister, cmd, pageIndex, pageSize, parameters)));
 }
示例#7
0
 /// <summary>
 /// 지정된 Command를 실행하여, 결과 셋을 Paging하여, 지정된 Page에 해당하는 정보만 Persistent Object로 빌드하여 반환한다.
 /// </summary>
 /// <typeparam name="T">Persistent Object의 수형</typeparam>
 /// <param name="repository">IAdoRepository 인스턴스</param>
 /// <param name="nameMap">컬럼명:속성명의 매핑정보</param>
 /// <param name="cmd">실행할 DbCommand</param>
 /// <param name="pageIndex">결과셋의 Page Index (0부터 시작)</param>
 /// <param name="pageSize">결과셋 Paging 시의 Page Size</param>
 /// <param name="parameters">DbCommand 실행시의 Parameter 정보</param>
 /// <returns>Paging된 Persistent Object의 List</returns>
 public static Task <IPagingList <T> > ExecuteInstanceAsync <T>(this IAdoRepository repository,
                                                                INameMap nameMap,
                                                                DbCommand cmd,
                                                                int pageIndex,
                                                                int pageSize,
                                                                params IAdoParameter[] parameters) where T : class
 {
     return(Task.Factory.StartNew(() => repository.ExecuteInstance <T>(nameMap, cmd, pageIndex, pageSize, parameters)));
 }
示例#8
0
        /// <summary>
        /// <see cref="ExecuteInstance{T}(IAdoRepository,System.Func{System.Data.IDataReader,T},System.Data.Common.DbCommand,NFramework.Data.IAdoParameter[])"/> 를 비동기적으로 수행하여,
        /// DataReader로부터 T 수형의 인스턴스를 매핑한다.
        /// </summary>
        /// <typeparam name="T">결과 셋으로 표현할 엔티티의 수형</typeparam>
        /// <param name="repository"><see cref="IAdoRepository"/></param>
        /// <param name="mapFunc">DataReader로부터 {T} 수형의 인스턴스로 변환하는 메소드</param>
        /// <param name="query">실행할 SQL문 또는 Procedure Name</param>
        /// <param name="parameters">패러미터</param>
        /// <returns>매핑한 엔티티 컬렉션을 결과값으로 가지는 Task</returns>
        public static Task <IList <T> > ExecuteInstanceAsync <T>(this IAdoRepository repository,
                                                                 Func <IDataReader, T> mapFunc,
                                                                 string query,
                                                                 params IAdoParameter[] parameters)
        {
            mapFunc.ShouldNotBeNull("mapFunc");
            query.ShouldNotBeWhiteSpace("query");

            if (IsDebugEnabled)
            {
                log.Debug("비동기 방식으로 ExecuteReader<{0}>()을 수행하고, 결과를 IList<{0}>으로 매핑합니다... query=[{1}]", typeof(T).FullName, query);
            }

            return(Task.Factory.StartNew(() => {
                using (var cmd = repository.GetCommand(query))
                    return repository.ExecuteInstance <T>(mapFunc, cmd, parameters);
            }));
        }
示例#9
0
        /// <summary>
        /// <see cref="ExecuteInstance{T}(IAdoRepository,NFramework.Data.Persisters.IReaderPersister{T},System.Data.Common.DbCommand,NFramework.Data.IAdoParameter[])"/> 를 비동기적으로 수행하여,
        /// DataReader로부터 T 수형의 인스턴스를 매핑한다.
        /// </summary>
        /// <typeparam name="T">결과 셋으로 표현할 엔티티의 수형</typeparam>
        /// <param name="repository"><see cref="IAdoRepository"/></param>
        /// <param name="persister">DataReader로부터 {T} 수형의 인스턴스를 생성하는 생성자</param>
        /// <param name="query">실행할 SQL문 또는 Procedure Name</param>
        /// <param name="parameters">패러미터</param>
        /// <returns>매핑한 엔티티 컬렉션을 결과값으로 가지는 Task</returns>
        public static Task <IList <T> > ExecuteInstanceAsync <T>(this IAdoRepository repository,
                                                                 IReaderPersister <T> persister,
                                                                 string query,
                                                                 params IAdoParameter[] parameters) where T : class
        {
            persister.ShouldNotBeNull("persister");
            query.ShouldNotBeWhiteSpace("query");

            if (IsDebugEnabled)
            {
                log.Debug("비동기적으로 ExecuteReader<{0}>()을 수행하고, 결과를 IList<{0}>으로 매핑합니다... query=[{1}]", typeof(T).FullName, query);
            }

            return(Task.Factory.StartNew(() => {
                using (var cmd = repository.GetCommand(query))
                    return repository.ExecuteInstance <T>(persister,
                                                          cmd,
                                                          parameters);
            }));
        }