Пример #1
0
        /// <summary>
        /// DataSource로부터 새로운 Persistent object를 빌드합니다.
        /// </summary>
        /// <param name="dataReader">데이타 소스</param>
        /// <returns>Persistent object</returns>
        public override T Persist(IDataReader dataReader)
        {
            dataReader.ShouldNotBeNull("dataReader");

            if (IsDebugEnabled)
            {
                log.Debug("Build Persistent object of Type [{0}] from IDataReader... Name Mapping method=[{1}]",
                          typeof(T).FullName, NameMapper.GetType().FullName);
            }

            var persistent  = FactoryFunction();
            var columnNames = Enumerable.Range(0, dataReader.FieldCount).Select <int, string>(dataReader.GetName).ToArray();

            foreach (var columnName in columnNames)
            {
                var propertyName = NameMapper.MapToPropertyName(columnName);

                if (propertyName.IsNotWhiteSpace())
                {
                    var columnValue = dataReader.AsValue(columnName);

                    if (IsDebugEnabled)
                    {
                        log.Debug("속성명 [{0}]에 DataReader 컬럼명 [{1}]의 값 [{2}]를 설정합니다...", propertyName, columnName, columnValue);
                    }

                    DynamicAccessor.SetPropertyValue(persistent, propertyName, columnValue);
                }
            }
            return(persistent);
        }
Пример #2
0
        /// <summary>
        /// DataSource로부터 새로운 Persistent object를 빌드합니다.
        /// </summary>
        /// <param name="dataRow">데이타 소스</param>
        /// <returns>Persistent object</returns>
        public override TPersistent Persist(DataRow dataRow)
        {
            dataRow.ShouldNotBeNull("dataRow");

            if (IsDebugEnabled)
            {
                log.Debug("Build Persistent object of Type [{0}] from DataRow... Name Mapping method=[{1}]",
                          typeof(TPersistent).FullName, NameMapper.GetType().FullName);
            }

            var persistent = FactoryFunction();

            foreach (DataColumn col in dataRow.Table.Columns)
            {
                var propertyName = NameMapper.MapToPropertyName(col.ColumnName);

                if (propertyName.IsNotWhiteSpace())
                {
                    if (IsDebugEnabled)
                    {
                        log.Debug("속성명 [{0}]에 DataRow의 컬럼명 [{1}]의 값 [{2}]를 설정합니다...", propertyName, col.ColumnName, dataRow[col]);
                    }

                    DynamicAccessor.SetPropertyValue(persistent, propertyName, dataRow[col]);
                }
            }

            return(persistent);
        }
Пример #3
0
        /// <summary>
        /// 실행 결과인 <paramref name="reader"/>를 반환합니다.
        /// </summary>
        /// <param name="reader"></param>
        protected virtual IEnumerable <Dictionary <string, string> > BuildResponse(IDataReader reader)
        {
            var records = new List <Dictionary <string, string> >();

            while (reader.Read())
            {
                var record = new Dictionary <string, string>();
                foreach (var columnName in reader.GetFieldNames())
                {
                    var propertyName = NameMapper.MapToPropertyName(columnName);
                    record[propertyName] = reader.AsString(columnName);
                }

                records.Add(record);
            }
            return(records);
        }