public virtual List <T> ExecuteReader <T>( string storedProcedureName, string columnNameOut, out int totalRecords) { if (string.IsNullOrEmpty(SqlConnectionString)) { throw new ArgumentNullException(ErrorDbConnection); } totalRecords = 0; using (var connection = new SqlConnection(SqlConnectionString)) { connection.Open(); var list = new List <T>(); using (var command = new SqlCommand()) { command.Connection = connection; command.CommandText = storedProcedureName; command.CommandType = CommandType.StoredProcedure; command.Parameters.Add(AddOutputParameter(columnNameOut, 50, SqlDbType.Int)); var reader = command.ExecuteReader(); var properties = typeof(T).GetProperties(); while (reader.Read()) { var local = Activator.CreateInstance <T>(); foreach (var info in properties) { try { var name = ReflectionExtensions.GetAttributeDisplayName(info); if (name == Constants.NotMapped) { continue; } var data = reader[name]; if (data.GetType() != typeof(DBNull)) { info.SetValue(local, data, null); } } catch (Exception) { continue; } } list.Add(local); } reader.Close(); if (command.Parameters[columnNameOut].Value != null) { totalRecords = (int)command.Parameters[columnNameOut].Value; } } connection.Close(); return(list); } }
public DataContexService() { var data = ConfigurationManager.ConnectionStrings[Constants.ConnectionString].ToString(); SqlConnectionString = ReflectionExtensions.Decrypt(Constants.ConnectionString, data); }