|
inject container self to service
|
|||
---|---|---|---|
#18+
Почему поднялся вопрос. может кто то отговорит. вообщем сделал сервис с массовой загрузкой ef летает все ок. загружаем по 100 записей и потом их отправляем в бд(всего записей около 100к и фоном грузится в джобе). схематично код Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
все летает до ориентировочно 200 итерации, вставка 100 записей и получение флага до 100мс, после начинает трабла и операция получения flag тормозит до 2 минут и потом снова быстрая вставка. Кто то скажет что ef не для массовых вставок и я соглашусь. Но если пересоздавать контекст на каждую вставку проблем уже нет. Поэтому я подумал как завести сам контейнер в сервис и руками резолвить инстанс репозитория на каждую итерацию. конечно переписать на нативный скул не проблема, но пока хочется остаться на орм. Что то типо такого Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
или я делаю очень плохое решение? и да я не совсем понимаю как зарегать контейнер .. регистрация в одной точке на уровне приложения, а сервисы на уровне бизнес-логики. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 14:07 |
|
inject container self to service
|
|||
---|---|---|---|
#18+
handmadeFromRu, Не делают орм для простых инсерт. Оно вам надо? Долго переписать? Ну и где лог запроса который тормозит? Что именно 2 минуты делается? 3. Там вроде флаг есть в ef выкл трекера.... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 15:48 |
|
inject container self to service
|
|||
---|---|---|---|
#18+
handmadeFromRu, Отключай трекинг. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 15:49 |
|
inject container self to service
|
|||
---|---|---|---|
#18+
Petro123handmadeFromRu, Не делают орм для простых инсерт. Оно вам надо? Долго переписать? не особо так как дженерик репо, просто подсунуть другую реализацию через тот же дапер. просто пока хотел в одном стиле пока возможно. трекинг на вставку отключен. щас порылся в коде - оказалось есть обновление одной сущности, а вот там трекинг включен. вообщем заводить контейнер внутрь сервиса плохая идея? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 16:19 |
|
inject container self to service
|
|||
---|---|---|---|
#18+
handmadeFromRu, resolver внутрь сервиса? конечно плохая, инжектировать через конструктор -- хорошая идея ) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 16:57 |
|
inject container self to service
|
|||
---|---|---|---|
#18+
handmadeFromRu, Логирование, логи, отладка, профилрование. Выясни чем занят комп 2 мин. Какой был запрос перед зависанием? Это наша работа. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 17:14 |
|
inject container self to service
|
|||
---|---|---|---|
#18+
hVostthandmadeFromRu, resolver внутрь сервиса? конечно плохая, инжектировать через конструктор -- хорошая идея ) конечно через конструктор и только через него. но тут пришла идея сделать это через такое в dryioc Код: c# 1. 2. 3.
чтоб вызывать новый просто выполняю функтор должно сработать. Просто не хотел некией интерфейс IResolver прокидывать на уровень сервисов. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 21:32 |
|
inject container self to service
|
|||
---|---|---|---|
#18+
Petro123handmadeFromRu, Логирование, логи, отладка, профилрование. Выясни чем занят комп 2 мин. Какой был запрос перед зависанием? Это наша работа. да я понимаю, покрыл по тупому стовотчами и в логфайл, как раз на получение списка из бд висело. хотя судя по sql профилировщику всего 30мс запрос на чтение было. проблема вскрылась именно на продакшине. тесты легко проходили не сразу заметили медленность фонового процесса. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 21:36 |
|
inject container self to service
|
|||
---|---|---|---|
#18+
handmadeFromRu, Ну дак трекинг отключили и без изменений? Потом, вы же можете после пачки по 100 штук пересоздать контекст, а не после каждой вставки. Потом, можно сделать тест вставки отдельно от проекта, и прогнать для уточнения ситуации. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 23:08 |
|
inject container self to service
|
|||
---|---|---|---|
#18+
handmadeFromRuчтоб вызывать новый просто выполняю функтор должно сработать. Просто не хотел некией интерфейс IResolver прокидывать на уровень сервисов. а зачем новый? как регистрируешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 08:03 |
|
inject container self to service
|
|||
---|---|---|---|
#18+
Petro123handmadeFromRu, Ну дак трекинг отключили и без изменений? Потом, вы же можете после пачки по 100 штук пересоздать контекст, а не после каждой вставки. Потом, можно сделать тест вставки отдельно от проекта, и прогнать для уточнения ситуации. да я ж писал на вставку у меня нет трекинга, трекинг только для update. и там есть апрдей одной сущности. да я и делал вставку по 100 штук. перешел к идее пересоздания контекта и эт основой вопрос ж мой был) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 08:16 |
|
inject container self to service
|
|||
---|---|---|---|
#18+
hVosttа зачем новый? как регистрируешь? чтоб пересоздать контекст, регистрирую как обычно Код: c# 1. 2. 3. 4. 5. 6.
почитал доку dryioc и он может вернуть функтор на создание нового объекта со всеми зависимости. то что надо п.с. правда я все ж думаю сделать репозиторий через дапер на случай такие ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 08:21 |
|
inject container self to service
|
|||
---|---|---|---|
#18+
handmadeFromRuчтоб пересоздать контекст, регистрирую как обычно эт странно. если ты пересоздаёшь контекст в одном скоупе, а потом вызываешь у IUnitOfWork.Save, где и что сохраняется? смысл плодить инстансы репо? очень странное решение :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 12:06 |
|
inject container self to service
|
|||
---|---|---|---|
#18+
hVosttэт странно. если ты пересоздаёшь контекст в одном скоупе, а потом вызываешь у IUnitOfWork.Save, где и что сохраняется? смысл плодить инстансы репо? очень странное решение :) ну я вроде и спрашиваю как лучше сделать) а поп поводу твоих вопрос то IUnitOfWork.Save, сохраняте пачками в моем случае по 100 штук + пара полей другой сущности обновляет в бд. если что то случиться такое не откатить уже конечно ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 13:01 |
|
inject container self to service
|
|||
---|---|---|---|
#18+
handmadeFromRu, ef extensions bulk ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 13:42 |
|
inject container self to service
|
|||
---|---|---|---|
#18+
Petro123handmadeFromRu, ef extensions bulk пробовал также минусы что и у пересоздания контекста. а так да шустренько. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 14:11 |
|
inject container self to service
|
|||
---|---|---|---|
#18+
handmadeFromRu, Что за минусы? Он специально для вставки по несколько штук записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 14:16 |
|
inject container self to service
|
|||
---|---|---|---|
#18+
Petro123handmadeFromRu, Что за минусы? Он специально для вставки по несколько штук записей. 1 транзакцией провести? и чет дохера http://joxi.ru/4Ak00oKFyONGqr ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 14:52 |
|
inject container self to service
|
|||
---|---|---|---|
#18+
handmadeFromRu, Платный? )) Фигово. А ef utilites? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 15:20 |
|
inject container self to service
|
|||
---|---|---|---|
#18+
Petro123 жизнь боль и нет поддержки core net, Bulk Insert Library There is three major library supporting Bulk Insert: Entity Framework Extensions (Paid but supported) EntityFramework.BulkInsert (No longer supported) EFUtilities (No longer supported) пока вопрос закрыт в таком виде. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 15:46 |
|
|
start [/forum/topic.php?fid=18&fpage=22&tid=1355297]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
others: | 277ms |
total: | 426ms |
0 / 0 |