170 похожих чатов

Возвращаемся к вопросу репозитория с EF. Понятно, что репозиторий -

это паттерн, и как любой другой паттерн, "хороший" он или "плохой" определяется контекстом использования. Безусловно, создавать еще одну обертку над EF по типу UserRepository это глупо, ведь класс, который наследует DbContext, автоматически сам по себе становится репозиторием. А когда настает вопрос о сменности орм, допустим с EF поменять на Telerik или Dapper, то нужно выделить интерфейс. Тогда можно к нашему контексту который наследует DbContext добавить реализацию нашего интерфейса IRepository. И все, проблема решена! Однако есть вопрос... А как дальше то действовать? У нас в IRepository будут храниться IDbSet ? тогда все равно жесткая привязка в плане зависимостей проекта к EF. У нас будут в интерфейсе методы типа GetAllUsersByID(int id) и они будут реализованы в самом AppDbContext : DbContext, IRepository ? Либо может тут как-то можно паттерн команда присобачить? Вот хорошо, AppDbContext является репозиторием. Как его поменять на другой?

2 ответов

5 просмотров

Не наследуется от контекста, а принимает его как зависимость, конкретную реализацию

когда вопрос встает о том, чтобы поменять ORM тебе все равно прийдется все выкинуть

Похожие вопросы

Обсуждают сегодня

А чем вам питонисты не угодили?😂
.
79
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Dim Dim, [02.07.2024 11:07] DB 0x62 Dim Dim, [02.07.2024 11:07] DB 0x66 Dim Dim, [02.07.2024 11:07] кто пояснит что это?
Dim Dim
14
Ошибка: segmentation fault (core dumped) Код: pastebin.com/BEsNNSSV Сообщение от компилятора: отсутствует ОС: Arch Linux Ядро: x86_64 Linux 6.9.7-arch1-1 Процессор: Intel Cele...
sec
4
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Кстати, я тут еще с одной темой столкнулся, вот учу я C++, на таком то ресурсе, а остальные постоянно советуют практиковаться, что то писать, проекты, но как писать если вот т...
aaswq1
7
Добрый день, чат. Мне в очередь из других RabbitMQ по shovel валятся метрики в формате текста для Prometheus. Помогите пожалуйста подружить RabbitMQ и Prometheus, чтобы он (...
Aleksey
4
@ahndmn @ayaw0_0 здарова, на чем пишете?
Aiwan \ (•◡•) / _bot
7
Карта сайта