private object SelectValueInternal <T>(string query, IEnumerable <SQLiteQueryParameter> args, IRowMapper <T> rowMapper, object obj, SQLiteConnection connection) { using (SQLiteCommand command = connection.CreateCommand()) { command.CommandText = query; PrepareCommandParameters(command, args); using (SQLiteDataReader reader = command.ExecuteReader(CommandBehavior.SingleResult)) { reader.Read(); if (reader.HasRows) { if (rowMapper != null) { obj = rowMapper.Map(reader); } else { // Used for primitive types obj = reader[0]; } } reader.Close(); } } return(obj); }
public object Map(DbDataReader dataReader, object instance) { return(_rowMapper.Map(dataReader, new RowMapperContext() { Instance = instance, PocoData = _pocoData })); }
private IEnumerable <T> SelectInternal <T>(string query, IEnumerable <QueryParameter> args, IRowMapper <T> rowMapper, SqlConnection connection, SqlTransaction transaction = null) { using (SqlCommand command = connection.CreateCommand()) { command.CommandText = query; if (transaction != null) { command.Transaction = transaction; } PrepareCommandParameters(command, args); using (SqlDataReader reader = command.ExecuteReader()) { var isNullable = Nullable.GetUnderlyingType(typeof(T)) != null; while (reader.Read()) { if (rowMapper != null) { yield return(rowMapper.Map(reader)); } else { // Check for null values and return default instance of T (should be nullable) // If not checked for NULL values, conversion will fail, resulting in InvalidCastException being thrown if (isNullable && reader[0] == Convert.DBNull) { yield return(default(T)); } else { yield return((T)reader[0]); } } } reader.Close(); } } }