/// <summary>Get events for flight</summary> /// <cardinality>Many</cardinality> public List <FlightEventsData> FlightEvents( Guid flightId ) { var ret = new List <FlightEventsData>(); string sql = @" select fe.flight_event_number ,fe.date_time ,fe.date_time_type_rcd ,dttr.date_time_type_name ,fe.new_date_time from flight_event as fe inner join date_time_type_ref as dttr on dttr.date_time_type_rcd = fe.date_time_type_rcd --realwhere where fe.flight_id = @flight_id order by fe.flight_event_number desc "; using (var conn = new SqlConnection(Conn.ConnectionString)) { conn.Open(); conn.BeginTransaction(IsolationLevel.ReadUncommitted).Commit(); using (var command = new SqlCommand(sql, conn)) { command.Parameters.Add("@flight_id", SqlDbType.UniqueIdentifier).Value = flightId; Logging log = Logging.PerformanceTimeStart("SolutionNorSolutionPort.DataAccessLayer.FlightSearch.FlightEvents"); IDataReader reader = command.ExecuteReader(CommandBehavior.SingleResult); log.PerformanceTimeStop(sql, command); var ordinals = new FlightEventsDataOrdinals(reader); while (reader.Read()) { var data = new FlightEventsData(); data.Populate(reader, ordinals); ret.Add(data); } reader.Close(); } return(ret); } }
// 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, FlightEventsDataOrdinals ordinals) { if (!reader.IsDBNull(ordinals.FlightEventNumber)) { FlightEventNumber = reader.GetInt32(ordinals.FlightEventNumber); } if (!reader.IsDBNull(ordinals.DateTime)) { DateTime = reader.GetDateTime(ordinals.DateTime); } if (!reader.IsDBNull(ordinals.DateTimeTypeRcd)) { DateTimeTypeRcd = reader.GetString(ordinals.DateTimeTypeRcd); } if (!reader.IsDBNull(ordinals.DateTimeTypeName)) { DateTimeTypeName = reader.GetString(ordinals.DateTimeTypeName); } if (!reader.IsDBNull(ordinals.NewDateTime)) { NewDateTime = reader.GetDateTime(ordinals.NewDateTime); } }