В ASP.NET MVC, где находится место (папка) "наилучшей практики" для размещения моего класса Entity-Framework DataContext? - PullRequest
10 голосов
/ 18 мая 2011

Я видел несколько проектов с классами Entity Framework DataContext в папке «Модели», но поскольку это не совсем модель, это не так.

В настоящее время мой DataContext (вместе сКласс IDatabaseInitializer) находится в корне моего проекта, но это меня тоже беспокоит.

Есть ли распространенная / лучшая практика для этого, или я должен просто оставить их в корне или в папке с именем Data или чем-то еще?

Ответы [ 6 ]

7 голосов
/ 18 мая 2011

Возможно, это - это модель, поскольку она поддерживает состояние вашего приложения.Вот почему люди помещают это туда.

Если вы хороший мальчик и используете уровень абстракции / хранилища - он должен пойти туда.

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

5 голосов
/ 18 мая 2011

Это не имеет значения.Я положил его в папку Models, потому что именно туда заносятся все вещи базы данных.

3 голосов
/ 18 мая 2011

Я скажу, что лучше всего ставить его в модель, как это описывается моделью MVC, и поскольку я работаю над MVC в течение последних 3 месяцев, я очень за это ... плюс это дает вам большая гибкость при вызове классов EM ...

3 голосов
/ 18 мая 2011

В других местах, где я работал, VS Solutions были разделены на 3 проекта:

  • Презентация (сайт MVC)
  • Услуга (классы бизнес-логики, включая объекты POCO)
  • Репозиторий (доступ к данным в контексте данных EF)
2 голосов
/ 18 мая 2011

Создайте другой проект с нашим хранилищем данных, добавьте проект в решение и укажите его там, где это необходимо.Шаблон репозитория дает преимущества при тестировании и изменении слоя данных в функции по мере необходимости.

См. http://www.asp.net/entity-framework/tutorials/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application

1 голос
/ 15 августа 2014

Только мои мысли по этому поводу;для любых классов, связанных с Entity Framework, таких как класс DataContext или базовый класс, мы помещаем их в папку DataFramework.Как и в теории, в то время как они расширяют EntityFramework в этом контексте, нет никаких причин, по которым они не могли бы расширить другую инфраструктуру базы данных, такую ​​как nHibernate.

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