コード例 #1
0
        /// <summary>
        /// <see cref="ResourceName"/>에 해당하는 리소스 중에 <paramref name="localeKey"/>, <paramref name="resourceKey"/>에
        /// 해당하는 리소스 정보를 조회하는 <see cref="DbCommand"/>를 생성합니다.
        /// </summary>
        /// <param name="localeKey">지역화 정보( <see cref="CultureInfo.Name"/>)</param>
        /// <param name="resourceKey">Resource Key to retrive</param>
        private DbCommand GetResourceCommand(string localeKey, string resourceKey)
        {
            var sql = string.Format(GetResourceSql, TableName);

            return(Ado.GetSqlStringCommand(sql,
                                           AssemblyNameParameter,
                                           ResourceNameParameter,
                                           new AdoParameter("LocaleKey", localeKey),
                                           new AdoParameter("ResourceKey", resourceKey)));
        }
コード例 #2
0
        /// <summary>
        /// 지정된 쿼리 문을 실행한 결과 셋의 레코드 갯수를 구한다. (SQL 문장이 SQL Count() 함수 문장으로 변환이 가능하다면 속도가 가장 빠르다.)
        /// </summary>
        /// <param name="repository">IAdoRepository 인스턴스</param>
        /// <param name="sqlString">실행할 Command 객체</param>
        /// <param name="parameters">Command 인자 정보</param>
        /// <returns>결과 셋의 레코드 수</returns>
        /// <remarks>
        /// 실제 SQL의 count(*) 함수로 변환할 수 있는 SQL문장이라면, 변환하여 Count 값을 가져오고,
        /// 불가능하다면 IDataReader를 이용하여 결과 셋을 가져와서 갯수만 센다.
        /// </remarks>
        /// <seealso cref="AdoTool.GetCountingSqlString"/>
        public static int CountBySqlString(this IAdoRepository repository, string sqlString, params IAdoParameter[] parameters)
        {
            sqlString.ShouldNotBeWhiteSpace("sqlString");

            // 1. SELECT Count(*) FROM 구문으로 변환이 가능하다면, 변환된 SQL 문장을 수행한다.
            try {
                var countSql = AdoTool.GetCountingSqlString(sqlString);
                var count    = repository.ExecuteScalarBySqlString(countSql, parameters).AsInt(-1);

                if (count > -1)
                {
                    return(count);
                }
            }
            catch (Exception ex) {
                if (log.IsInfoEnabled)
                {
                    log.Info("Count() SQL로 변환 작업이 지원되지 않는 문장입니다. DataReader를 이용하여, 결과 셋의 레코드 수를 알아봅니다.");
                    log.Info("sqlString=[{0}]", sqlString);
                    log.Info(ex);
                }
            }

            // 2. SQL Count() 함수를 이용하지 못할 경우라면, 그냥 DataReader를 이용하여 Count를 계산한다.
            //
            using (var cmd = repository.GetSqlStringCommand(sqlString))
                return(repository.Count(cmd, parameters));
        }
コード例 #3
0
        /// <summary>
        /// QueryProvider에서 제공하는 Query로 <see cref="DbCommand"/> 인스턴스를 생성합니다.
        /// </summary>
        /// <param name="repository">IAdoRepository 인스턴스</param>
        /// <param name="queryKey">[Section,] QueryName 형태의 쿼리 키</param>
        /// <param name="parameters">parameter collection</param>
        /// <returns>DbCommand instance</returns>
        /// <exception cref="InvalidOperationException">QueryProvider 속성이 null일때</exception>
        public static DbCommand GetNamedQueryCommand(this IAdoRepository repository, string queryKey, params IAdoParameter[] parameters)
        {
            var query = repository.QueryProvider.GetQuery(queryKey);

            Guard.Assert(query.IsNotWhiteSpace(), "QueryKey=[{0}] 에 해당하는 쿼리 문을 찾지 못했습니다.", queryKey);

            return((AdoTool.IsSqlString(query))
                       ? repository.GetSqlStringCommand(query, parameters)
                       : repository.GetProcedureCommand(query, AdoTool.DEFAULT_DISCOVER_PARAMETER, parameters));
        }
コード例 #4
0
        /// <summary>
        /// 지정된 쿼리문을 CommendText로 가지는 <see cref="DbCommand"/> 인스턴스를 생성합니다.
        /// </summary>
        /// <param name="repository">IAdoRepository 인스턴스</param>
        /// <param name="query">simple query string or procedure name or queryKey of QueryProvider ([Section,] QueryName)</param>
        /// <param name="discoverParams">discover parameters</param>
        /// <returns>instance of <see cref="DbCommand"/></returns>
        public static DbCommand GetCommand(this IAdoRepository repository, string query, bool discoverParams)
        {
            query.ShouldNotBeWhiteSpace("query");

            if (repository.QueryProvider != null &&
                query.Contains(InIQueryProviderBase.SECTION_DELIMITER) &&
                AdoTool.IsSqlString(query) == false)
            {
                string namedQuery;
                if (repository.QueryProvider.TryGetQuery(query, out namedQuery))
                {
                    query = namedQuery;
                }
            }

            return((AdoTool.IsSqlString(query))
                       ? repository.GetSqlStringCommand(query)
                       : repository.GetProcedureCommand(query, discoverParams));
        }