Example #1
0
        /// <summary>
        /// Процесс работы программы
        /// </summary>
        public void Start()
        {
            // Динамический List из контекста базы данных
            IQueryable tableList = null;

            switch (_tableSettings.TableName)
            {
            case "albums":
                tableList = DataBaseContext.GetGenericList <Albums>(_connectionString).AsQueryable();
                break;

            case "artists":
                tableList = DataBaseContext.GetGenericList <Artists>(_connectionString).AsQueryable();
                break;

            case "customers":
                tableList = DataBaseContext.GetGenericList <Customers>(_connectionString).AsQueryable();
                break;

            case "employees":
                tableList = DataBaseContext.GetGenericList <Employees>(_connectionString).AsQueryable();;
                break;

            case "genres":
                tableList = DataBaseContext.GetGenericList <Genres>(_connectionString).AsQueryable();
                break;

            case "invoice-items":
                tableList = DataBaseContext.GetGenericList <InvoiceItems>(_connectionString).AsQueryable();
                break;

            case "invoices":
                tableList = DataBaseContext.GetGenericList <Invoices>(_connectionString).AsQueryable();
                break;

            case "media-types":
                tableList = DataBaseContext.GetGenericList <MediaTypes>(_connectionString).AsQueryable();
                break;

            case "playlists":
                tableList = DataBaseContext.GetGenericList <Playlists>(_connectionString).AsQueryable();
                break;

            case "playlist-track":
                tableList = DataBaseContext.GetGenericList <PlaylistTrack>(_connectionString).AsQueryable();
                break;

            case "tracks":
                tableList = DataBaseContext.GetGenericList <Tracks>(_connectionString).AsQueryable();
                break;
            }

            // Формирование строки запроса
            var columns = "";

            for (var i = 0; i < _tableSettings.Columns.Count; i++)
            {
                if (i != 0)
                {
                    columns = columns + ", " + _tableSettings.Columns[i];
                }
                else
                {
                    columns = columns + _tableSettings.Columns[i];
                }
            }

            var selectStatement = "new ( " + columns + " )";

            // Запрос выбора нужных столбцов из таблицы
            var result = tableList.Select(selectStatement);

            var index = 0;

            // Создание обработчика создания XML-документов, формирование документов
            var xmlFileCreator = new XmlFileCreator(_targetFolder, _tableSettings.TableName);

            foreach (var res in result)
            {
                if (index == 0)
                {
                    xmlFileCreator.CreateXmlDocuments();
                }
                else if (index % 10 == 0)
                {
                    xmlFileCreator.FinishXmlDocument(index);
                    xmlFileCreator.CreateXmlDocuments();
                }
                var str = res.ToString().Replace("{", "")
                          .Replace("}", "").Split(',');

                xmlFileCreator.CreateXmlRow();

                var i = 0;
                foreach (var col in str)
                {
                    var columnName = col.Substring(0, col.IndexOf("="));
                    var dataValue  = col.Substring(col.IndexOf("=") + 1);
                    xmlFileCreator.FillXmlDocument(columnName.Replace(" ", ""), dataValue);
                    if (i == str.Length - 1)
                    {
                        xmlFileCreator.FinishXmlElement();
                    }
                    i++;
                }

                xmlFileCreator.FinishXmlRow();

                index++;
            }
            xmlFileCreator.FinishXmlDocument(index);
            if (_tableSettings.DeleteAfter)
            {
                DeleteRows();
            }
        }