ASP.NET 5, хотел отделить структуру сущности от веб-проекта

asp.net-core asp.net-core-mvc entity-framework-core

Вопрос

Я пытаюсь достичь ниже структуры приложения

App.Model - UserModel - OrderModel

App.Service - UserService - IUserService

App.Entity - DbContext

Веб-сайт - WebAPI - вызывает службу

Большинство примеров приложений ASP.NET 5 инициализирует структуру сущности в файле запуска веб-сайта. например .AddEntityFrameowrk () .. и т. д.

Нужно знать, как мы можем разделить Entity в отдельный проект и как мы инициируем DBContext, если мы вызываем репозиторий из Service Project (так как файл запуска недоступен для библиотеки классов)

Популярные ответы

В предыдущих проектах я принял подход к поддержанию нескольких проектов ASP.NET в одном решении (или нескольких решениях). Это даст вам возможность удалить зависимости EF от вашего веб-приложения и поговорить с веб-приложением только с API, который обрабатывает все EF

Раньше я создал выделенный проект «домен», который содержит все модели и может ссылаться как на ваше веб-приложение, так и на проекты API.

Таким образом, структура проекта будет выглядеть так

Проект домена: содержит только классы c #, которые представляют вашу модель. Начните с «пустого» проекта

API: содержит ваш веб-API. Использует EF для взаимодействия с базой данных. Я лично подниму API для вашей модели, но это личный выбор. Прямо сейчас, в ASP.NET core 1.0 RC1, шаблон веб-api является плохим, поэтому я начинаю с полного «веб-приложения» и удаляю все представления по умолчанию, контроллеры, скрипты и т. Д. Ссылки на проект домена, чтобы вы могли поднимите свои контроллеры API из модели

Веб-приложение: ваш основной проект веб-приложений. Начните с шаблона «веб-приложения», но используйте HttpClient I ваш контроллер, чтобы использовать api для взаимодействия данных. Раньше я создал набор статических «вспомогательных классов api», чтобы упростить эту задачу, но это снова личный стиль. Ссылки на проект домена, чтобы вы могли конвертировать входящие ответы JSON в полную модель .net



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow