Путаница в MVC и модели сущностей - PullRequest
0 голосов
/ 14 ноября 2010

Мое замешательство связано с тем фактом, что я использую 2 различных пошаговых руководства по созданию приложений mvc, а именно: pro asp.net mvc Стивена Сандерсона и онлайн-магазин музыки mvc.Первый создает модель предметной области, помещая туда модель сущностей вместе с репозиториями, а демонстрация музыкального магазина помещает модель сущностей в папку модели mvc.Какой из них является лучшим подходом.Если объектная модель и связанные репозитории существуют на отдельном доменном уровне или в папке модели MVC.

Ответы [ 2 ]

3 голосов
/ 14 ноября 2010

Разделение интересов

Папка модели в шаблоне проекта Asp.net MVC действительно очень запутанная.Большинство разработчиков, недостаточно разбирающихся в паттерне MVC, считают, что модель приложения / предметной области = модель данных.В большинстве случаев это не так.

Например, пользовательский объект может иметь несколько различных форм:

  • NewUser - это объект модели приложения, который имеет большинство свойств пользователя, плюс два свойства пароля, которые могут быть декларативно проверены
  • User объект модели данных имеет все обычные свойства пользователя и одно свойство пароля
  • User сущность модели приложения имеет все обычные свойства и нет для пароля

Таким образом, вы можете увидеть на этом простом примере несколькомодели, которые отличаются друг от друга.И когда у вас есть приложение с несколькими сборками, очень разумно помещать модель приложения в отдельную сборку, поскольку все сборки, скорее всего, будут взаимодействовать только с использованием этих объектов.Никакие сущности модели данных не должны передаваться за пределы сборки / уровня данных, чтобы использовать SoC ...

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

Прочитайте этот ответ , который может помочь вам увидеть вещи немного яснее.
И этот также.

Я бы не рекомендовал использовать папку Model и использовать вместо нее отдельную сборку. У вас будет лучшее разделение и улучшенная масштабируемость.

0 голосов
/ 14 ноября 2010

Strategically имеет смысл поместить модель EF в ту же папку, что и репозитории, поскольку она просто является частью уровня доступа к данным внутри приложения .

Logically было бы лучше поместить модель EF в каталог Model, поскольку она создает все классы, необходимые для отражения базы данных в приложении. (И если вы откроете Class View, то все эти классы будут выглядеть лучше в папке с именем Model вместо Repositories)

В нашей компании мы столкнулись с той же проблемой и решили сохранить модель EF в папке Model.

В конце концов, вам решать, что вы делаете. Самое важное, что здесь нужно сделать, - это документ всевозможных решений, которые происходят во время разработки (когда, почему и на чем основаны).

Документирование всего, что может помешать позже WTF

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