protected override object MapInternal(Reflection.InitContext initContext) { FbDataReader dr = initContext.SourceObject as FbDataReader; // Fb's SP returns single row with nulls if selected object doesn't exists // so for all DBNull's (null) should be returned, instead of object instance // if (dr != null) { int i = dr.FieldCount; while (--i >= 0) { if (!dr.IsDBNull(i)) { break; } } // All field are DBNull. // if (i < 0) { return(null); } } return(base.MapInternal(initContext)); }
protected override void MapInternal(Reflection.InitContext initContext, IMapDataSource source, object sourceObject, IMapDataDestination dest, object destObject, params object[] parameters) { FullObjectMapper mapper = (FullObjectMapper)initContext.ObjectMapper; IDataReader dataReader = (IDataReader)sourceObject; //int[] index = GetIndex(source, dest); //IValueMapper[] mappers = GetValueMappers(source, dest, index); //foreach (var valueMapper in mappers) //{ //} InitSchema(dataReader); if (mapper.ColParent) { FillObject(mapper, dataReader, destObject); while (dataReader.Read()) { destObject = FillObject(destObject, mapper, dataReader); } } else { FillObject(mapper, dataReader, destObject); } }