Вы попали в ловушку следования «советам», которые вы не понимаете. Это обычное явление для новых разработчиков, поскольку существует врожденное желание делать все «правильно», но вы еще не понимаете, что это значит или влечет за собой.
Во-первых, то, что вы здесь делаете, называется N-Tier, и, хотя в течение десятилетий он был основным продуктом разработки программного обеспечения, он не всегда является правильным выбором. В частности, если вы не привыкли к шаблону и ваше приложение на самом деле не нуждается в нем, то вы можете столкнуться с серьезными проблемами и неэффективностью в вашем приложении.
Вам необходимо осознать, что здесь нет настоящего разделения. Ваше веб-приложение (то, что вы называете уровнем представления), требует подключения к базе данных. В результате, здесь есть жесткая зависимость. Максимум, на что вы можете надеяться - это абстрагировать большую часть кода, который обращается к базе данных, но вам все же нужно будет зависеть от того, что вы можете использовать в своих контроллерах для получения данных. Типичный подход здесь заключается в реализации шаблона хранилища / единицы работы. Затем он становится вашим слоем данных. Однако большинство людей упускают то, что если вы используете EF, , то - это ваш уровень данных. Доступ к данным уже абстрагирован, поэтому ваше приложение просто зависит от EF, а не от какой-то пользовательской библиотеки классов, которую вы создаете. EF - это ORM, и поэтому уже реализует шаблоны хранилища / единицы работы.
Короче говоря, просто используйте свой контекст EF прямо в своем веб-приложении. Если ваше приложение со временем станет достаточно большим / сложным, чтобы избежать абстрагирования, вам следует рассмотреть либо микросервис, либо шаблоны CQRS. Тем не менее, оба они нетривиальны и легко излишни для простого приложения.
Лучший совет, который я могу вам дать, - просто создать приложение. Не беспокойтесь о моделях или о том, что говорят другие люди. Ваше приложение определяет, какие шаблоны или архитектурные стили следует использовать, а не наоборот. Когда вы начинаете делать что-то, потому что вы "должны", это когда ваше приложение сходит с рельсов Цель всего этого - чистый, документированный и легко поддерживаемый код. Если у вас есть это с одним слоем, вам больше ничего не нужно.