EF4 с MVC3 - нужен ли шаблон репозитория? - PullRequest
6 голосов
/ 29 апреля 2011

Я недавно узнал о шаблонах проектирования репозитория и единицы работы и подумал, что я буду реализовывать их в новом проекте EF4 MVC3, поскольку абстракция в целом хороша.

По мере добавления их в проект,Мне интересно, стоит ли сок общеизвестного сжатия, учитывая следующее:

  • Крайне маловероятно, что базовый механизм доступа к данным изменится с EF4.
  • Этот уровень абстракциипотребует больше накладных расходов / путаницы с проектом и другими разработчиками в команде.

Единственное реальное преимущество, которое я вижу в использовании шаблона Repository, - это модульное тестирование приложения.Абстрагирование хранилища данных не кажется полезным, поскольку я знаю, что хранилище данных не изменится, и, кроме того, этот EF4 уже обеспечивает довольно хорошую абстракцию (я просто вызываю .AddObject (), и похоже, что я изменяю в памятиcollection, и я просто вызываю .SaveChanges (), который уже предоставляет шаблон единицы работы).

Должен ли я вообще задумываться о реализации этой абстракции?Я чувствую, что должна быть какая-то огромная выгода, которую я упускаю, но мне просто не нужно идти по этому пути.Я хочу быть убежденным в обратном;кто-то может сделать дело?Спасибо.

Ответы [ 2 ]

6 голосов
/ 30 апреля 2011

Я рекомендую вам , читая этот ответ и все связанные вопросы .Репозиторий является очень популярным шаблоном, и он действительно делает ваше приложение красивым и чистым.Это заставляет вас чувствовать, что ваша архитектура правильна, но некоторые предположения о шаблоне хранилища с EF не верны.По моему мнению (описано в этих ответах):

  • Это усложнит выполнение более сложной задачи, связанной с EF, или ваш репозиторий и реализация UoW должны будут иметь открытый интерфейс, очень похожий на EF * 1006.*
  • Это не сделает ваш код лучше тестируемым модулем, потому что все взаимодействия с репозиторием все еще должны охватываться интеграционными тестами.Не только мой опыт доказал, что фиктивный код EF путем замены linq-to-entity на linq-to-objects не проверяет ваш код.
2 голосов
/ 29 апреля 2011

да да да:) - прежде всего - шаблон репозитория помогает внедрить ваши зависимости для модульного тестирования.Во-вторых, он дает очень четкое представление о том, какие именно методы доступа к данным доступны, чтобы получить что-то, а не люди ошибаются.кодирование непосредственно против уровня EF.Загрузите шаблоны POCO для EF4, чтобы ваши классы не несли с собой свойства EF, если вы используете их в качестве моделей и / или не хотите никаких ссылок на библиотеки зависимостей EF в приложении mvc, предполагая, что работа с репозиторием находитсяотдельный проект (который я рекомендую).Если вы используете все view-модели, то это не такая большая проблема, но приятно работать с объектом "Customer" без дополнительных методов на них.На мой взгляд, чище.

...