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


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


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

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

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


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

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

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

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

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

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

SQLCommand ? :)

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

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


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

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

SQLCommand ? :)

Access, FoxPro?

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

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

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


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

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

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


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


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

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


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

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

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

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


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

А ЕФ использовать как ORM можно только в scoped? Это где-то прямо в доке по EF так написано? :))
...
Рейтинг: 0 / 0
29.11.2020, 23:59
    #40023223
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF. Зачем хранить DBContext в словаре по типу репозитория?
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
30.11.2020, 00:31
    #40023225
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF. Зачем хранить DBContext в словаре по типу репозитория?
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
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / EF. Зачем хранить DBContext в словаре по типу репозитория? / 25 сообщений из 26, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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