Недавно я изучил ASP.NET MVC (мне это нравится). Я работаю с компанией, которая использует инъекцию зависимостей для загрузки экземпляра репозитория в каждом запросе, и я знаком с использованием этого репозитория.
Но теперь я пишу пару своих MVC-приложений. Я не совсем понимаю, какие хосты и какие репозитории использует моя компания, и я пытаюсь решить наилучший подход к реализации доступа к данным.
Я использую С# и Entity Framework (со всеми последними версиями).
Я вижу три общих подхода к обработке доступа к данным.
-
Обычный контекст БД в операторе using каждый раз, когда я обращаюсь к данным. Это просто, и все работает нормально. Однако, если в двух местах необходимо прочитать одни и те же данные в одном запросе, данные должны быть прочитаны дважды. (С одним репозиторием на запрос один и тот же экземпляр будет использоваться в обоих местах, и я понимаю, что второе чтение просто вернет данные из первого чтения.)
-
Типичный шаблон репозитория. По причинам, которые я не понимаю, этот типичный шаблон включает создание класса-оболочки для каждой таблицы, используемой в базе данных. Это кажется мне неправильным. Фактически, поскольку они реализованы также как интерфейсы, я бы технически создавал два класса-оболочки для каждой таблицы. EF создает таблицы для меня. Я не верю, что этот подход имеет смысл.
-
Существует также общий шаблон репозитория, где создается один класс репозитория для обслуживания всех объектов сущности. Это имеет для меня гораздо больше смысла. Но имеет ли это смысл для других? Является ли ссылка выше наилучшего подхода?
Я хотел бы получить некоторые материалы от других по этой теме. Вы пишете свой собственный репозиторий, используя один из приведенных выше, или делаете что-то совсем другое. Пожалуйста, поделитесь.