public List <T> executeReadStore <T>(String name, StoreResultMapper <T> mapper, List <Parameter> parameters = null) { using (SqlConnection connection = getConnection()){ if (parameters == null) { parameters = new List <Parameter>(); } connection.Open(); SqlCommand command = createSqlCommand(name, connection, parameters); SqlDataReader dr = command.ExecuteReader(); List <T> result = new List <T>(); using (dr){ List <String> columnNames = Enumerable.Range(0, dr.FieldCount).Select(dr.GetName).ToList(); while (dr.Read()) { Dictionary <String, Object> row = new Dictionary <String, Object>(); foreach (var columnName in columnNames) { row.Add(columnName, dr[columnName]); } result.Add(mapper.getMapped(row)); } } return(result); } }
public T executeReadSingleResult <T>(String name, StoreResultMapper <T> mapper, List <Parameter> parameters = null) { List <T> list = executeReadStore <T>(name, mapper, parameters); if (list.Count == 1) { return(list[0]); } return(default(T)); }