Пример #1
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);
        }
Пример #2
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);
        }