Подтвердить что ты не робот

Где разместить модель данных Entity Framework в приложении MVC?

Давайте рассмотрим структуру папок приложения ASP.NET по умолчанию, поэтому она выглядит так:

-App_data
-Content
-Controllers
    HomeController.cs
-Models
    AccountModels.cs
-Scripts
-Views

Мой вопрос: где лучше всего разместить файл модели данных Entity Framework (EDMX)? Это папка "Модели"? Да, мы знаем, что хорошим решением является введение нового проекта и ссылка на него на приложение MVC, но теперь забываем об этом.

4b9b3361

Ответ 1

Для небольшого проекта он должен быть частью Модели. Для более крупного продукта репозиторий и связанная с ним модель могут быть в отдельной сборке.

Ответ 2

Ну, это дискуссионно, но я проголосовал бы за +1 для папки Модели.

Единственным другим кандидатом будет App_Data​​strong > , но это, как правило, для файловых баз данных (например, SQL Server CE.MDF) и файлов, которые вы не хотите обслуживать IIS.

Поскольку EDMX является абстракцией базы данных, он должен войти в папку Модели.

Если проект станет больше, вы должны определенно переместить свою модель EF в другой проект. Чтобы убедиться в этом, сделайте свои контроллеры доступными к EDMX через репозиторий/интерфейсы, поэтому, когда вы переместите DAL на другой проект, вам нужно будет добавить ссылку и добавить в операторы using.

Ответ 3

Я бы поместил EF-модель (aka физическая модель) всегда в свою собственную сборку или в "ядровую" сборку вне основного приложения MVC. То же самое относится к вашей бизнес-логике/доменной логике/доменным службам/и т.д. Отделите не веб-материал от MVC-Web-приложения.

Это поможет вам повторно использовать основную часть вашего приложения. Например, когда вам нужно предоставить его как услугу, инструмент командной строки, средство миграции и т.д.

Поскольку хранить это в своей собственной сборке так просто и занимает несколько минут, я очень рекомендую делать это для каждого крошечного приложения тоже.

Ответ 4

Мое мнение таково, что вы должны создать

  • отдельный проект для объектов домена, datacontracts и т.д. и т.д.... Как и MyProject.Infrastructure, включая многие папки, такие как DataContracts, Model, Exceptions и т.д.
  • отдельный проект для DataAccess, который содержит DBContexts и репозитории, таким образом вы можете легко управлять миграциями позже