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