public ConstructedValueExpression Compile(MapTypeContext context) { if (!context.TargetType.IsSupportedPrimitiveType() && context.TargetType != typeof(object)) { return(ConstructedValueExpression.Nothing); } var column = context.SingleColumn(); if (column == null) { return(ConstructedValueExpression.Nothing); } // Pull the value out of the reader into the rawVar var rawVar = context.CreateVariable(typeof(object), "raw"); var getRawStmt = Expression.Assign( rawVar, Expression.Call( context.RecordParameter, _getValueMethod, Expression.Constant(column.Index) ) ); var rawConvertExpr = MapScalar(context.TargetType, column, rawVar); column.MarkMapped(); return(new ConstructedValueExpression(new[] { getRawStmt }, rawConvertExpr, new[] { rawVar })); }