powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / EF. Зачем хранить DBContext в словаре по типу репозитория?
26 сообщений из 26, показаны все 2 страниц
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40021956
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сабж
...
Рейтинг: 0 / 0
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40021958
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соответственно чз DI внедряем фабрику контекстов, например чз конструктор
Код: c#
1.
private readonly DbContextFactory dbContextFactory;


и где нужно получаем контекст по типу рапозитория:
Код: c#
1.
var dbontext = dbContextFactory.Creaate(typeof(MyRepository));


а в фабрике, контексты в словаре по типу репозитория
Зачем так? Сразу внедряли бы контексты
...
Рейтинг: 0 / 0
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40021960
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты бухой, что ли? Чо это за WTF?
...
Рейтинг: 0 / 0
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40021976
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Ты бухой, что ли? Чо это за WTF?

Похоже для экономии ресурсов
Последний раз видел такое в московском клубе программистов, когда инет магаз писали
сейчас найду видео
...
Рейтинг: 0 / 0
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40021988
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
listtoview,

Я, впрочем, понял о чем ты. Подход вполне норм. Встроенный dependency injection не позволяет использовать "named" или "keyed" регистрации, как, например, Autofac, поэтому когда это нужно (резолвить один и тот же сервис разными реализациями), то это и делают через фабрику. Но, в случае DbContext проще действительно вставлять сразу нужный тип контекста. У нас у самих это сделано как у вас через жопу и бесит всякий раз
Код: c#
1.
2.
3.
4.
// вместо того, чтобы написать:
_db.Customers;
// писать вот так:
_db.GetDbSet<Customer>();


Типичное изобретение горящеглазых, которое кроме лишнего шума в коде не приносит никакой практической выгоды.
...
Рейтинг: 0 / 0
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40022007
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

а что кодите, если не секрет?
...
Рейтинг: 0 / 0
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40022017
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот у нас нет DBContext и нет проблем :)
...
Рейтинг: 0 / 0
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40022019
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA
А вот у нас нет DBContext и нет проблем :)

Все на датасетах?
...
Рейтинг: 0 / 0
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40022021
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
listtoview
fkthat,

а что кодите, если не секрет?

Да ничего особенного, обычная типовая трехзвенка: ангуляр -> API контроллеры -> сервисы BL -> EF -> Postgres.
...
Рейтинг: 0 / 0
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40022023
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA
А вот у нас нет DBContext и нет проблем :)

SQLCommand ? :)
...
Рейтинг: 0 / 0
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40022068
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
listtoview
skyANA
А вот у нас нет DBContext и нет проблем :)

SQLCommand ? :)

Access, FoxPro?
...
Рейтинг: 0 / 0
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40022086
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
listtoview
SQLCommand ? :)

Хрустальный шар говорит: NoSQLCommand))
...
Рейтинг: 0 / 0
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40022102
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA
А вот у нас нет DBContext и нет проблем :)


Ахах )))
У столяра тоже нет проблем с контекстом, с базами данных, с ЯП и другими технологиями тоже нет проблем )))

Но вообще, стоит признать, DbContext это полная шляпа, если проект выходит за рамки небольшого-среднего, то начинаются проблемы, при чём по большей части архитектурные.
...
Рейтинг: 0 / 0
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40022107
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
listtoview
пропущено...

SQLCommand ? :)

Access, FoxPro?

BDE
...
Рейтинг: 0 / 0
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40022108
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не, ну согласитесь, я хоть примерно начинаю понимать как правильно писать программу :)
...
Рейтинг: 0 / 0
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40022199
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Но вообще, стоит признать, DbContext это полная шляпа, если проект выходит за рамки небольшого-среднего, то начинаются проблемы, при чём по большей части архитектурные.

Ну, дробить его на более мелкие. По контекстам домена. БД где 100500 тысяч сущностей в одну кучу, это сама по себе как-то не подарок, хоть через DBContext с ней работай, хоть как. У нас в далекие времена еще .NET 2.0 был один чувак, который создал типизированный датасет, что при открытии него в дизайнере студия крешилась, потому что там было больше чем полтыщи таблиц
...
Рейтинг: 0 / 0
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40022295
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
hVostt
Но вообще, стоит признать, DbContext это полная шляпа, если проект выходит за рамки небольшого-среднего, то начинаются проблемы, при чём по большей части архитектурные.

Ну, дробить его на более мелкие. По контекстам домена. БД где 100500 тысяч сущностей в одну кучу, это сама по себе как-то не подарок, хоть через DBContext с ней работай, хоть как. У нас в далекие времена еще .NET 2.0 был один чувак, который создал типизированный датасет, что при открытии него в дизайнере студия крешилась, потому что там было больше чем полтыщи таблиц


Да не.. многолетняя практика показывает, что EF и DbContext подходит только для небольших проектов. Ну или в доску примитивных, где ничего сложнее CRUD-а нет.

От того сколько там сущностей, 10 или 100500 вообще монопенисуально, это сути не меняет.
...
Рейтинг: 0 / 0
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40022319
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Да не.. многолетняя практика показывает, что EF и DbContext подходит только для небольших проектов. Ну или в доску примитивных, где ничего сложнее CRUD-а нет.

Если с БД так или иначе работать надо, то через ЕФ это всяко удобнее делать из-за той же типизации данных. Ты же не будешь как в начале двухтысячных все через датаридеры читать и через DbCommand сохранять.
...
Рейтинг: 0 / 0
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40022324
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Если с БД так или иначе работать надо, то через ЕФ это всяко удобнее делать из-за той же типизации данных. Ты же не будешь как в начале двухтысячных все через датаридеры читать и через DbCommand сохранять.


Если тебе маппинг нужен, то есть микро-ормы, которые решают эту задачу эффективно и гибко.
...
Рейтинг: 0 / 0
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40022345
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
fkthat
Если с БД так или иначе работать надо, то через ЕФ это всяко удобнее делать из-за той же типизации данных. Ты же не будешь как в начале двухтысячных все через датаридеры читать и через DbCommand сохранять.


Если тебе маппинг нужен, то есть микро-ормы, которые решают эту задачу эффективно и гибко.

Поделки-недоормы типа Даппера? Смысл их использовать? Все проблемы с полноценными ORMами только от непонимания механизмов их работы.
...
Рейтинг: 0 / 0
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40022621
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Поделки-недоормы типа Даппера? Смысл их использовать? Все проблемы с полноценными ORMами только от непонимания механизмов их работы.


Ну погоди... Судя по тому, что ты прям категорически настаивал, что тебе не нужен DbContext в Scoped, значит ты совершенно не используешь полноценно все преимущества именно EF, как ORM. Тебе нужен тупой маппер.

Т.е. ты используешь EF, как поделку-недоорм. Какие претензии? Берёшь в таком случае более подходящий инструмент.

Какой смысл говорить, что лопата это "поделка", а надо использовать экскаватор, но при этом в другом топике ты топил за то, что каждому человеку нужно выдать по персональному экскаватору, а не использовать один на бригаду

Ты уж определись.
...
Рейтинг: 0 / 0
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40022622
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Все проблемы с полноценными ORMами только от непонимания механизмов их работы.


А там прям высшая математика, для избранных священнослужителей, прошедших курс 10-летней медитации?
...
Рейтинг: 0 / 0
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40022655
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Ну погоди... Судя по тому, что ты прям категорически настаивал, что тебе не нужен DbContext в Scoped, значит ты совершенно не используешь полноценно все преимущества именно EF, как ORM. Тебе нужен тупой маппер.

А ЕФ использовать как ORM можно только в scoped? Это где-то прямо в доке по EF так написано? :))
...
Рейтинг: 0 / 0
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40023223
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
А ЕФ использовать как ORM можно только в scoped? Это где-то прямо в доке по EF так написано? :))


https://docs.microsoft.com/en-US/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-5.0#entity-framework-contexts

By default, Entity Framework contexts are added to the service container using the scoped lifetime because web app database operations are normally scoped to the client request .

И обрати внимание:

Services of a given lifetime shouldn't use a database context with a lifetime that's shorter than the service's lifetime.

Документацию стоит хоть иногда открывать :)
Ну и в исходниках, которые открыты, тоже много чего полезного можно для себя открыть.

Я конечно понимаю, фантазировать -- оно безусловно интересней, чем работать с реальностью.
...
Рейтинг: 0 / 0
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40023225
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
By default, Entity Framework contexts are added to the service container using the scoped lifetime because web app database operations are normally scoped to the client request .

Вот уж глаза мне открыл - без тебя я про это даже не догадывался Прочитай внимательней мое сообщение. Где сказано, что контекст ЕФ можно использовать только как scoped сервис и никак иначе?

hVostt
Services of a given lifetime shouldn't use a database context with a lifetime that's shorter than the service's lifetime.

Если у тебя все без всякой нужды зарегано как singleton (настолько регулярно такое встречаю, что уже готов за это руки отрывать), то у тебя даже как scoped его использовать не получится.
...
Рейтинг: 0 / 0
EF. Зачем хранить DBContext в словаре по типу репозитория?
    #40023236
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
hVostt
By default, Entity Framework contexts are added to the service container using the scoped lifetime because web app database operations are normally scoped to the client request .

Вот уж глаза мне открыл - без тебя я про это даже не догадывался Прочитай внимательней мое сообщение. Где сказано, что контекст ЕФ можно использовать только как scoped сервис и никак иначе?


Ну это уже передёргивание.
В инструкции к ножу тоже явно не написано, что можно использовать его только для хлеба.

fkthat
Если у тебя все без всякой нужды зарегано как singleton (настолько регулярно такое встречаю, что уже готов за это руки отрывать), то у тебя даже как scoped его использовать не получится.


Ну вот, следуя твоей же логике, об этом тоже нигде явно не написано. Так что регай всё как Singleton, а ещё проще всё сделать static-ом :)
...
Рейтинг: 0 / 0
26 сообщений из 26, показаны все 2 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / EF. Зачем хранить DBContext в словаре по типу репозитория?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]