protected override void RegisterRelationValue(RelationRowCreationResource res, String columnName) { IPropertyType pt = res.CurrentPropertyType; Object value = null; if (res.ContainsRelKeyValueIfExists(columnName)) { // if this column is relation key, it gets the value from relation key values // for performance and avoiding twice getting same column value value = res.ExtractRelKeyValue(columnName); } else { IValueType valueType = pt.ValueType; Map <String, int?> selectIndexMap = GetSelectIndexMap(); if (selectIndexMap != null) { value = GetValue(res.DataReader, columnName, valueType, selectIndexMap); } else { value = valueType.GetValue(res.DataReader, columnName); } } if (value != null) { res.IncrementValidValueCount(); DBMeta dbmeta = FindDBMeta(res.Row); String propertyName = pt.PropertyName; if (dbmeta != null && dbmeta.HasEntityPropertySetupper(propertyName)) { dbmeta.SetupEntityProperty(propertyName, res.Row, value); } else { PropertyInfo pd = pt.PropertyInfo; pd.SetValue(res.Row, value, null); } } }