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