public string GenerateFormatFile(BcpDirection direction)
        {
            List <FieldMappingDefinition> fieldMappingDefs = _definition.FieldMappingDefinitions;
            string fields = "";
            int    count  = 0;

            for (int i = 0; i < fieldMappingDefs.Count; i++)
            {
                FieldMappingDefinition definition = fieldMappingDefs[i];
                if (definition.Type != FieldMappingType.Simple)
                {
                    continue;
                }

                // have a problem with (max) datatype in bcp so we handle it seperately
                if ((definition.DestinationField.IsMaxDataType) && _definition.HandleMaxTextSeperately)
                {
                    continue;
                }

                string bcpFormat;
                if (_mode == BcpMode.Native)
                {
                    bcpFormat = BcpTemplates.BCP_NATIVE_FORMAT_ROW;
                }
                else
                {
                    bcpFormat = i < fieldMappingDefs.Count - 1 ? BcpTemplates.BCP_CHARACTER_FORMAT_ROW
                                                                                      : BcpTemplates.BCP_CHARACTER_FORMAT_LAST_ROW;
                }

                string dataType          = definition.DestinationField.SqlDataType;
                int    prefixLength      = definition.DestinationField.PrefixLength;
                int    length            = definition.DestinationField.Length;
                int    serverColumnOrder = definition.DestinationField.Order;
                string serverColumnName  = definition.DestinationField.Name;
                string collation         = definition.DestinationField.Collation;
                fields += bcpFormat.Inject(new
                {
                    Index             = ++count,
                    DataType          = dataType,
                    PrefixLength      = prefixLength,
                    Length            = length,
                    ServerColumnOrder = direction == BcpDirection.Export ? count : serverColumnOrder,
                    ServerColumnName  = serverColumnName,
                    Collation         = string.IsNullOrEmpty(collation) ? @"""""" : collation
                }) + Environment.NewLine;
            }

            string formatFile = BcpTemplates.BCP_FORMAT_FILE.Inject(new
            {
                FieldCount = count,
                Fields     = fields
            });

            return(formatFile);
        }
        public string GenerateFormatFile(BcpDirection direction)
        {
            List<FieldMappingDefinition> fieldMappingDefs = _definition.FieldMappingDefinitions;
            string fields = "";
            int count = 0;
            for (int i = 0; i < fieldMappingDefs.Count; i++)
            {
                FieldMappingDefinition definition = fieldMappingDefs[i];
                if (definition.Type != FieldMappingType.Simple)
                {
                    continue;
                }

                // have a problem with (max) datatype in bcp so we handle it seperately
                if ((definition.DestinationField.IsMaxDataType) && _definition.HandleMaxTextSeperately)
                {
                    continue;
                }

                string bcpFormat;
                if (_mode == BcpMode.Native)
                {
                    bcpFormat = BcpTemplates.BCP_NATIVE_FORMAT_ROW;
                }
                else
                {
                    bcpFormat = i < fieldMappingDefs.Count - 1 ? BcpTemplates.BCP_CHARACTER_FORMAT_ROW
                                                                                      : BcpTemplates.BCP_CHARACTER_FORMAT_LAST_ROW;
                }

                string dataType = definition.DestinationField.SqlDataType;
                int prefixLength = definition.DestinationField.PrefixLength;
                int length = definition.DestinationField.Length;
                int serverColumnOrder = definition.DestinationField.Order;
                string serverColumnName = definition.DestinationField.Name;
                string collation = definition.DestinationField.Collation;
                fields += bcpFormat.Inject(new
                {
                    Index = ++count,
                    DataType = dataType,
                    PrefixLength = prefixLength,
                    Length = length,
                    ServerColumnOrder = direction == BcpDirection.Export ? count : serverColumnOrder,
                    ServerColumnName = serverColumnName,
                    Collation = string.IsNullOrEmpty(collation) ? @"""""" : collation
                }) + Environment.NewLine;
            }

            string formatFile = BcpTemplates.BCP_FORMAT_FILE.Inject(new
            {
                FieldCount = count,
                Fields = fields
            });

            return formatFile;
        }