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); }
/// <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); }
/// <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); }
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); }
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); }
/// <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; }
/// <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; }