// use ordinals to speed up access to DataReader // links: // crud definition: https://en.wikipedia.org/wiki/Create,_read,_update_and_delete // docLink: http://sql2x.org/documentationLink/327451c3-64a8-4de8-b359-76742d634497 // parameters: // reader: IDataReader from SQLClient public void Populate(IDataReader reader, DefaultPerformanceIndicatorsDataOrdinals ordinals) { if (!reader.IsDBNull(ordinals.CommandName)) { CommandName = reader.GetString(ordinals.CommandName); } if (!reader.IsDBNull(ordinals.HitCount)) { HitCount = reader.GetInt64(ordinals.HitCount); } if (!reader.IsDBNull(ordinals.AverageMilliseconds)) { AverageMilliseconds = reader.GetInt32(ordinals.AverageMilliseconds); } }
/// <summary>Get default statistics</summary> /// <cardinality>Many</cardinality> public List <DefaultPerformanceIndicatorsData> DefaultPerformanceIndicators() { var ret = new List <DefaultPerformanceIndicatorsData>(); string sql = @" select dpt.command_name ,dpt.hits as hit_count ,cast(dpt.milliseconds / dpt.hits as int) as average_milliseconds from default_performance_time_rollup as dpt order by dpt.command_name "; Logging log = Logging.PerformanceTimeStart("Default", "DataAccessLayer", "DefaultSearch", "DefaultPerformanceIndicators"); try { using (var conn = new SqlConnection(Conn.ConnectionString)) { conn.Open(); conn.BeginTransaction(IsolationLevel.ReadUncommitted).Commit(); using (var command = new SqlCommand(sql, conn)) { log.PerformanceTimePrepare(command); IDataReader reader = command.ExecuteReader(CommandBehavior.SingleResult); log.PerformanceTimeCheck(); var ordinals = new DefaultPerformanceIndicatorsDataOrdinals(reader); while (reader.Read()) { var data = new DefaultPerformanceIndicatorsData(); data.Populate(reader, ordinals); ret.Add(data); } reader.Close(); } } } catch (Exception ex) { log.Error(ex); } return(ret); }