private TableSchema(TableSchemaDto dto)
        {
            var fieldsList    = dto.Fields.Select(FieldSchema.FromDto).ToList();
            var dateTimeField = fieldsList.FirstOrDefault(f => string.Equals(f.Name, dto.DateTimeField, StringComparison.OrdinalIgnoreCase));
            var sortFields    = fieldsList.Where(f => dto.SortFields.Contains(f.Name, StringComparer.OrdinalIgnoreCase));

            Name          = dto.Name;
            Fields        = new ReadOnlyCollection <FieldSchema>(fieldsList);
            SortFields    = new ReadOnlyCollection <FieldSchema>(sortFields.ToList());
            DateTimeField = dateTimeField;

            Validate();
        }
        public TableSchemaDto AsDto()
        {
            var tableSchemaDto = new TableSchemaDto
            {
                Name = Name
            };

            foreach (var fieldSchema in Fields)
            {
                tableSchemaDto.Fields.Add(fieldSchema.AsDto());
            }

            return(tableSchemaDto);
        }
 public static TableSchema FromDto(TableSchemaDto tableSchemaDto)
 {
     return(new TableSchema(tableSchemaDto));
 }