public static void Read(
            Dictionary <string, UserTable> userTables,
            IDataReader reader)
        {
            var factory = new ComputedColumnFactory(reader);

            while (reader.Read())
            {
                factory.CreateComputedColumn(userTables, reader);
            }
        }
        public static async Task ReadAsync(
            Dictionary <string, UserTable> userTables,
            DbDataReader reader,
            CancellationToken cancellationToken = default(CancellationToken))
        {
            cancellationToken.ThrowIfCancellationRequested();
            var factory = new ComputedColumnFactory(reader);

            while (await reader.ReadAsync(cancellationToken))
            {
                cancellationToken.ThrowIfCancellationRequested();
                factory.CreateComputedColumn(userTables, reader);
            }
        }