예제 #1
0
        public void Case1()
        {
            var row = new ResultRow();
            row.Add("FirstName", "abc");
            row.Add("LastName", "def");

            var expctd = new SampleClass1
            {
                FirstName = "abc",
                LastName  = "def",
            };
            var actual = new SampleClass1();
            DbRowMapper.Map(row, actual).MustBe(true, "Map() ret val");
            actual.MustBe(expctd);
        }
예제 #2
0
        public void Case1()
        {
            var row = new ResultRow();

            row.Add("FirstName", "abc");
            row.Add("LastName", "def");

            var expctd = new SampleClass1
            {
                FirstName = "abc",
                LastName  = "def",
            };
            var actual = new SampleClass1();

            DbRowMapper.Map(row, actual).MustBe(true, "Map() ret val");
            actual.MustBe(expctd);
        }
예제 #3
0
        /// <summary>
        /// <paramref name="reader"/>를 읽어, <see cref="ResultRow"/>의 컬렉션인 <see cref="ResultSet"/>을 빌드합니다.
        /// </summary>
        /// <param name="reader">DataReader</param>
        /// <param name="nameMapper">컬럼명을 속성명으로 매핑해주는 매퍼입니다.</param>
        /// <param name="firstResult">첫번째 레코드 인덱스 (0부터 시작)</param>
        /// <param name="maxResults">최대 레코드 수</param>
        /// <returns><see cref="ResultSet"/> 인스턴스</returns>
        public static ResultSet CreateResultSet(this IDataReader reader, INameMapper nameMapper, int firstResult, int maxResults)
        {
            reader.ShouldNotBeNull("reader");

            if (nameMapper == null)
            {
                nameMapper = new SameNameMapper();
            }

            if (IsDebugEnabled)
            {
                log.Debug("IDataReader로부터 정보를 읽어 ResultRow들을 만들어 ResultSet 으로 빌드합니다...");
            }

            var resultSet = new ResultSet();

            while (firstResult-- > 0)
            {
                if (reader.Read() == false)
                {
                    return(resultSet);
                }
            }

            if (maxResults <= 0)
            {
                maxResults = int.MaxValue;
            }

            resultSet.FieldNames = reader.GetFieldNames();

            var rowIndex = 0;

            while (reader.Read() && rowIndex++ < maxResults)
            {
                var row = new ResultRow();

                foreach (var fieldName in resultSet.FieldNames)
                {
                    row.Add(nameMapper.MapToPropertyName(fieldName), reader.AsValue(fieldName));
                }

                resultSet.Add(row);
            }

            if (IsDebugEnabled)
            {
                log.Debug("IDataReader로부터 정보를 읽어 ResultSet을 빌드했습니다!!! Row Count=[{0}]", resultSet.Count);
            }

            return(resultSet);
        }
예제 #4
0
        /// <summary>
        /// <paramref name="reader"/>를 읽어, <see cref="ResultRow"/>를 빌드합니다.
        /// </summary>
        /// <param name="reader">DataReader</param>
        /// <param name="fieldNames">컬럼명 리스트</param>
        /// <param name="nameMapper">컬럼명을 속성명으로 매핑해주는 매퍼입니다.</param>
        /// <returns></returns>
        internal static ResultRow CreateResultRow(this IDataReader reader, IList <string> fieldNames, INameMapper nameMapper)
        {
            Guard.Assert(reader.IsClosed == false, "reader 가 닫혀있습니다.");

            var row = new ResultRow();

            foreach (var fieldName in fieldNames)
            {
                row.Add(nameMapper.MapToPropertyName(fieldName), reader.AsValue(fieldName));
            }

            return(row);
        }
예제 #5
0
        public async Task <RecordSetShim> QueryRS
            (string sqlQuery)
        {
            var rs = new RecordSetShim();

            await FillList(rs, r =>
            {
                var row = new ResultRow();

                for (int i = 0; i < r.FieldCount; i++)
                {
                    row.Add(r.GetName(i), r[i]);
                }

                return(row);
            },
                           sqlQuery);

            return(rs);
        }
예제 #6
0
        private async Task <RecordSetShim> Shimify(DbDataReader readr)
        {
            var shim     = new RecordSetShim();
            var colCount = readr.FieldCount;

            while (await readr.ReadAsync())
            {
                var row = new ResultRow();

                for (int j = 0; j < colCount; j++)
                {
                    var key = readr.GetName(j);
                    var val = await readr.GetFieldValueAsync <object>(j);

                    row.Add(key, val);
                }

                shim.Add(row);
            }
            return(shim);
        }
예제 #7
0
        /// <summary>
        /// <paramref name="reader"/>를 읽어, <see cref="ResultRow"/>를 빌드합니다.
        /// </summary>
        /// <param name="reader">DataReader</param>
        /// <param name="fieldNames">컬럼명 리스트</param>
        /// <param name="nameMapper">컬럼명을 속성명으로 매핑해주는 매퍼입니다.</param>
        /// <returns></returns>
        internal static ResultRow CreateResultRow(this IDataReader reader, IList<string> fieldNames, INameMapper nameMapper) {
            Guard.Assert(reader.IsClosed == false, "reader 가 닫혀있습니다.");

            var row = new ResultRow();

            foreach(var fieldName in fieldNames)
                row.Add(nameMapper.MapToPropertyName(fieldName), reader.AsValue(fieldName));

            return row;
        }
예제 #8
0
        /// <summary>
        /// <paramref name="reader"/>를 읽어, <see cref="ResultRow"/>의 컬렉션인 <see cref="ResultSet"/>을 빌드합니다.
        /// </summary>
        /// <param name="reader">DataReader</param>
        /// <param name="nameMapper">컬럼명을 속성명으로 매핑해주는 매퍼입니다.</param>
        /// <param name="firstResult">첫번째 레코드 인덱스 (0부터 시작)</param>
        /// <param name="maxResults">최대 레코드 수</param>
        /// <returns><see cref="ResultSet"/> 인스턴스</returns>
        public static ResultSet CreateResultSet(this IDataReader reader, INameMapper nameMapper, int firstResult, int maxResults) {
            reader.ShouldNotBeNull("reader");

            if(nameMapper == null)
                nameMapper = new SameNameMapper();

            if(IsDebugEnabled)
                log.Debug("IDataReader로부터 정보를 읽어 ResultRow들을 만들어 ResultSet 으로 빌드합니다...");

            var resultSet = new ResultSet();

            while(firstResult-- > 0) {
                if(reader.Read() == false)
                    return resultSet;
            }

            if(maxResults <= 0)
                maxResults = int.MaxValue;

            resultSet.FieldNames = reader.GetFieldNames();

            var rowIndex = 0;
            while(reader.Read() && rowIndex++ < maxResults) {
                var row = new ResultRow();

                foreach(var fieldName in resultSet.FieldNames)
                    row.Add(nameMapper.MapToPropertyName(fieldName), reader.AsValue(fieldName));

                resultSet.Add(row);
            }

            if(IsDebugEnabled)
                log.Debug("IDataReader로부터 정보를 읽어 ResultSet을 빌드했습니다!!! Row Count=[{0}]", resultSet.Count);

            return resultSet;
        }