Вы генерируете следующий запрос:
SELECT 'TransactionID'
,'RecordID'
,'AccountID'
-- more column names
UNION ALL
SELECT * FROM temp_transactionslines
order by TransactionID ASC
Предложение ORDER BY применяется ко всему набору UNION. Если вы хотите отсортировать только второй результат запроса, вам следует заключить его в скобки:
SELECT 'TransactionID'
,'RecordID'
,'AccountID'
-- more column names
UNION ALL
(SELECT * FROM temp_transactionslines order by TransactionID ASC)
Демонстрация: https://www.db-fiddle.com/f/fSXBH527fxg9hXy1JYGHyQ/0
Я пойду с
* Company.Website - the project
* Company.Website.Tests
, короткая причина и ответ просты, тестирование и проект связано в коде, поэтому это должно совместно использовать пространство имен.
, Если Вы хотите разделить кода и тестировать в решении, у Вас есть та опция так или иначе. например, можно настроить решение с
- Папка Кода
- Тестовая Папка
У меня на самом деле есть альтернативный параллельный корень.
Тесты. Компания. Веб-сайт
Это работает приятно на устранение неоднозначности вещей, когда у Вас есть новые sub пространства имен.
Я лично пошел бы с
Компания. Тесты. Веб-сайт
Тот путь у Вас есть общее тестовое пространство имен и проекты в нем, после той же структуры как фактический проект.
Я - большой поклонник структурирования тестового пространства имен как это:
Компания. Тесты. Компания Website.xxx
. Тесты. Веб-сайт. Средства управления
Как Вы, я думаю о тестах как о параллельной структуре пространства имен к основному коду, и это предоставляет Вам это. Это также имеет преимущество, которое, так как пространство имен все еще запускает с Вашего названия компании, у Вас не должно быть коллизий именования со сторонними библиотеками
Я также предпочитаю "Тесты", снабжающие префиксом подлинное имя блока так, чтобы ее легкое для наблюдения всех моих блоков модульного теста, перечисленных в алфавитном порядке вместе, когда я массовый выбор их для получения по запросу в NUNit или безотносительно тестовой обвязки Вы используете.
Поэтому, если Веб-сайт был названием моего решения (и блоки), я предлагаю -
Tests.Website.dll согласиться с фактическим блоком кода Website.Dll
Мы следуем за встроенным подходом:
Company.Namespace.Test
Company.Namespace.Data.Test
Этот способ, которым тесты близко к коду, который тестируется, не имея необходимость переключаться назад и вперед между проектами или выслеживать ссылки для обеспечения, существует тест, покрывающий конкретный метод. Мы также не должны поддерживать две отдельных, но идентичных, иерархии.
Мы можем также протестировать отличные части кода, поскольку мы улучшаем и разрабатываем.
Кажется немного странным сначала, но за длительный срок это работало действительно хорошо на нас.
Я обычно называю тестовые проекты Тесты Проекта для краткости в Проводнике Решения, и я использую Компания. Пространство имен. Тесты для пространств имен.
Я предпочитаю Компанию. Веб-сайт. Спецификация и обычно имеет один тестовый проект на решение
Я предпочитаю идти с:
Компания. Веб-сайт. Тесты
я не забочусь ни о каких подпространствах имен как Компания. Веб-сайт. Средства управления, все тесты входят в то же пространство имен: Компания. Веб-сайт. Тесты. Вы не хотите, чтобы Ваши тестовые пространства имен должны были быть в параллели с остальной частью Вашего кода, потому что это просто заставляет пространства имен рефакторинга брать вдвое более долго.
С MVC, начинающим стать действительностью в мире веб-разработки .NET, я начал бы думать вдоль тех строк. Помните, что M, V и C являются отличными компонентами, таким образом:
Веб-сайт являются Вашим легким представлением. Ядро содержит контроллеры, помощников, интерфейсы представления, и т.д. Ядро. Тесты являются Вашими тестами для упомянутого Ядра. Модель для Вашей модели данных. Прохладная вещь здесь состоит в том, что Ваши образцовые тесты могут автоматизировать Вашу базу данных определенные тесты.
Это может быть излишеством для некоторых людей, но я нахожу, что оно позволяет мне разделять проблемы довольно легко.