// use ordinals to speed up access to DataReader // links: // docLink: http://sql2x.org/documentationLink/327451c3-64a8-4de8-b359-76742d634497 // parameters: // reader: IDataReader from SQLClient public void Populate(IDataReader reader, DefaultErrorOverviewDataOrdinals ordinals) { if (!reader.IsDBNull(ordinals.DefaultErrorId)) { DefaultErrorId = reader.GetGuid(ordinals.DefaultErrorId); } if (!reader.IsDBNull(ordinals.DateTime)) { DateTime = reader.GetDateTime(ordinals.DateTime); } if (!reader.IsDBNull(ordinals.DefaultErrorLayerName)) { DefaultErrorLayerName = reader.GetString(ordinals.DefaultErrorLayerName); } if (!reader.IsDBNull(ordinals.DefaultErrorTypeName)) { DefaultErrorTypeName = reader.GetString(ordinals.DefaultErrorTypeName); } if (!reader.IsDBNull(ordinals.DomainName)) { DomainName = reader.GetString(ordinals.DomainName); } if (!reader.IsDBNull(ordinals.ClassName)) { ClassName = reader.GetString(ordinals.ClassName); } if (!reader.IsDBNull(ordinals.MethodName)) { MethodName = reader.GetString(ordinals.MethodName); } if (!reader.IsDBNull(ordinals.ErrorMessage)) { ErrorMessage = reader.GetString(ordinals.ErrorMessage); } }
/// <summary>Error overview, last first </summary> /// <cardinality>Many</cardinality> public List <DefaultErrorOverviewData> DefaultErrorOverview() { var ret = new List <DefaultErrorOverviewData>(); string sql = @" select top 50 de.default_error_id ,de.date_time ,delr.default_error_layer_name ,detr.default_error_type_name ,de.domain_name ,de.class_name ,de.method_name ,de.error_message from default_error as de inner join default_error_layer_ref as delr on delr.default_error_layer_rcd = de.default_error_layer_rcd inner join default_error_type_ref as detr on detr.default_error_type_rcd = de.default_error_type_rcd order by de.date_time desc "; Logging log = Logging.PerformanceTimeStart("DefaultErrorOverview"); try { using (var conn = new SqlConnection(ConfigurationManager.AppSettings["Conn"])) { 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 DefaultErrorOverviewDataOrdinals(reader); while (reader.Read()) { var data = new DefaultErrorOverviewData(); data.Populate(reader, ordinals); ret.Add(data); } reader.Close(); } } } catch (Exception ex) { log.Error(ex); } return(ret); }