Esempio n. 1
0
        /// <summary>
        /// Execute the operation synchronously.
        /// </summary>
        /// <returns></returns>
        public override List <TimeSpan> Execute(object state = null)
        {
            var result = new List <TimeSpan>();

            Prepare().Execute(cmd =>
            {
                using (var reader = cmd.ExecuteReader())
                {
                    if (reader.FieldCount > 1 && !m_ListOptions.HasFlag(ListOptions.IgnoreExtraColumns))
                    {
                        throw new UnexpectedDataException($"Expected one column but found {reader.FieldCount} columns");
                    }

                    var columnCount  = m_ListOptions.HasFlag(ListOptions.FlattenExtraColumns) ? reader.FieldCount : 1;
                    var discardNulls = m_ListOptions.HasFlag(ListOptions.DiscardNulls);
                    var rowCount     = 0;
                    while (reader.Read())
                    {
                        rowCount++;
                        for (var i = 0; i < columnCount; i++)
                        {
                            if (!reader.IsDBNull(i))
                            {
                                result.Add((TimeSpan)reader.GetValue(i));
                            }
                            else if (!discardNulls)
                            {
                                throw new MissingDataException("Unexpected null value");
                            }
                        }
                    }
                    return(rowCount);
                }
            }, state);


            return(result);
        }