Какую роль играет контекст в EF? Должен ли я использовать шаблон репозитория? Потому что в моем понимании контекста это уже репозиторий. Это абстракция магазина или я ошибаюсь?Какую роль играет контекст в EF?
-1
A
ответ
1
Это сильно обсуждается, поэтому рассмотрите следующее как «ответ».
Контекст в EF - это единица работы, где DbSets являются хранилищами. Вместе они образуют абстракцию по базе данных. Метод SaveChanges будет выполнять все изменения, внесенные в каждый репозиторий.
Есть много примеров, когда люди используют шаблон репозитория для создания IRepository, который использует контекст/DbSet внутренне. Но, делая это, вы:
- создание абстракции над абстракцией
- потерей функциональности EF, так как ваш интерфейс скрывает реализацию
Причины вы бы создать эту дополнительную абстракцию, что вы можете замените EF на что-то еще, скажем, другую базу данных/хранилище. Но я считаю, что yagni здесь. Если вы запускаете проект, предназначенный для базы данных SQL, каковы шансы, что ваш клиент изменится на Oracle, например?
Надеюсь, это поможет.
Мое мнение такое же, как у вас. И я думаю, что хранилище сделает абстракцию над самим EF? –