powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / EF. Зачем хранить DBContext в словаре по типу репозитория?
25 сообщений из 26, страница 1 из 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
25 сообщений из 26, страница 1 из 2
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / EF. Зачем хранить DBContext в словаре по типу репозитория?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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