Неопытный веб-разработчик кричит о помощи!
Вступление
Я разрабатываю веб-приложение MVC (используя ASP.NET Core из-за моего интереса к нему). На внутреннем сервере имеется MSSQL-сервер с довольно сложными базами данных (тысячи таблиц). В моем проекте я хотел бы представить часть общедоступных данных в представлении (в таблицах) на основе пользовательских запросов (отправка запросов формы), а затем позволяет пользователю загружать данные (CSV, XML).
Проблемы архитектуры
Сначала я начал с использования Entity Framework, но позже понял, что просто не могу перевести все мои операторы SQL в LINQ. Причина в том, что самый простой запрос содержит несколько инструкций INNER JOINS и LEFT JOINS и SELECT и бесконечное количество таблиц.
Я планирую создать REST API, посылая данные в формате JSON. Насколько я заинтересован в.NET Core MVC, я могу иметь свой контроллер API в том же проекте, что и мой уровень представления.
Это единственная часть, с которой я сталкиваюсь, создание веб-приложений с использованием MVC 5.
Большая борьба
В этом проекте я не буду манипулировать данными, только ПРОЧИТАЙТЕ его и представить их пользователю. Я знаю принципы использования разных классов модели (Domain, Entity, ViewModel)
Что я делаю сейчас, и я полагаю, что это неправильно:
Контроллер MVC API возвращает результаты запроса SQL как объект типа DataTable (имеет класс SQL Helper для выполнения задания), пока мой контроллер позаботится о сериализации объектов как JSON.
Другой контроллер (с привязкой модели к представлению) получает критерии поиска пользователя через HTML-формы и вызывает контроллер API с привязкой соответствующих свойств.
Наконец, вопросы
ОБНОВЛЕНИЕ РЕДАКТИРОВАНИЯ:
В моих SQL-запросах я должен создавать временные таблицы, которые не поддерживаются в LINQ. Какие-либо предложения?
В случае, если этот вопрос будет отмечен как архитектурный, а не программный, примите мои извинения и любезно отсылайте меня на правильный форум, где я могу получить помощь.
Спасибо заранее!
Вы найдете запросы LINQ намного легче понять и отладить, чем SQL. Сохраняйте уровень доступа к данным как отдельный проект и имеете модульные тесты для запросов. Чтобы сохранить принцип SOLID, не смешивайте слой данных с api. Если вы только начинаете, EF Core может быть лучше EF6 в основном из-за скорости и мобильности.