Где разместить модель данных Entity Framework в приложении MVC? - PullRequest
14 голосов
/ 17 января 2011

Рассмотрим структуру папок приложения ASP.NET MVC по умолчанию, поэтому она выглядит следующим образом:

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

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

Ответы [ 4 ]

17 голосов
/ 17 января 2011

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

7 голосов
/ 17 января 2011

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

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

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

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

1 голос
/ 06 июля 2017

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

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

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

0 голосов
/ 09 июня 2017

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

  1. отдельный проект для доменных объектов, контрактов и т. Д. И т. Д. Как MyProject.Infrastructure, включая много папок, таких как DataContracts, Модель, Исключения и т. Д.
  2. отдельный проект для DataAccess, который содержит DBContexts и репозитории, так что вы можете легко управлять миграциями позже
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...