powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF: Как вы делаете пакетные операции?
25 сообщений из 179, страница 1 из 8
EF: Как вы делаете пакетные операции?
    #38885731
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажем, нужно сделать обновление поля у кучи записей в таблице.

Пытаясь что-то найти по теме, наткнулся на расширение EntityFramework.Extended
http://habrahabr.ru/post/203214/
https://github.com/loresoft/EntityFramework.Extended


Кто как вообще поступает в подобных случаях?
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38885799
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProСкажем, нужно сделать обновление поля у кучи записей в таблице.

Пытаясь что-то найти по теме, наткнулся на расширение EntityFramework.Extended
http://habrahabr.ru/post/203214/
https://github.com/loresoft/EntityFramework.Extended


Кто как вообще поступает в подобных случаях?

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

Это расширение работает в обход контекста, т.е. по сути тоже самое, что втыкать SQL. Другого не дано.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38885801
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Если данных обновлять надо не очень много, то можно отключить отслеживание изменений контекста. А если очень-очень много, то SQL + UPDATE, но повторюсь, это может просто сломать всё.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38885829
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttShocker.ProСкажем, нужно сделать обновление поля у кучи записей в таблице.

Пытаясь что-то найти по теме, наткнулся на расширение EntityFramework.Extended
http://habrahabr.ru/post/203214/
https://github.com/loresoft/EntityFramework.Extended


Кто как вообще поступает в подобных случаях?

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

Это расширение работает в обход контекста, т.е. по сути тоже самое, что втыкать SQL. Другого не дано.
ну теперь представь, что с сайтами закончил и написал прогу которая ведет например проекты из 100000 работ
и вот кто то сдвинул некоторые работы в начале проекта
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38885832
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProСкажем, нужно сделать обновление поля у кучи записей в таблице.

Пытаясь что-то найти по теме, наткнулся на расширение EntityFramework.Extended
http://habrahabr.ru/post/203214/
https://github.com/loresoft/EntityFramework.Extended


Кто как вообще поступает в подобных случаях?

Так EF же работает с хранимками. То что надо.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38885889
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueТак EF же работает с хранимками. То что надо.ну, хранимка в данном случае, также как и это расширение, будет выполнена вне контекста, да еще и создаст привязку к конкретной СУБД.

Я готов принять версию Хвоста, как рабочую, но мне непонятно, как делать рефакторинг таких вещей:

1) В прайс-листе в одной категории лежит 200 позиций, администратор подумал, что это слишком много, создал еще одну категорию, выбрал галочками по умозрительным критериям 100 позиций и перенес их в другую категорию.

2) Типовая функция для [около]почтовых программ: "пометить все|выделенные письма как [не]прочитанные"

3) Чистка устаревших записей лога
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38885899
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Я готов принять версию Хвоста, как рабочую, но мне непонятно, как делать рефакторинг таких вещей:

}{ вост просто не работал с большими объемами данных, вот ему и кажется, что без прямых инъекций можно обойтись.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38885904
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProСкажем, нужно сделать обновление поля у кучи записей в таблице.

Пытаясь что-то найти по теме, наткнулся на расширение EntityFramework.Extended
http://habrahabr.ru/post/203214/
https://github.com/loresoft/EntityFramework.Extended


Кто как вообще поступает в подобных случаях?Отдельной Command (CQRS).
Или через репозиторий, внутри которого одна из реализаций: ExcuteUpdate (NHibernate), ExcuteNonQuery (ADO.NET), Execute (Dapper), Update (MongoDB).
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38885926
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttВ штатной ситуации пакетные обновления не требуются. А если вдруг потребовались, то это огромный косяк в бизнес-логике и в архитектуре данных.
Ты укурен? И причем тут "бизнес логика"?
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38885966
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Monochromatique}{ вост просто не работал с большими объемами данных, вот ему и кажется, что без прямых инъекций можно обойтись.

Давай-ка реши мне следующие задачи при изменении, «прямыми инъекциями»:

1. Валидация изменений для каждого объекта.
2. Проверка допустимости изменения для пользователя по каждому объекту.
3. Дополнительные задачи инфраструктуры, такие как установка времени изменения, логгирование, и особенно, если ПО предполагает возможность отката последнего изменения.
4. Дополнительные бизнес-процессы, связанные с изменениями.

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

Если требуется часто делать пакетные изменения, возможно данные плохо нормализованы.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38885968
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro1) В прайс-листе в одной категории лежит 200 позиций, администратор подумал, что это слишком много, создал еще одну категорию, выбрал галочками по умозрительным критериям 100 позиций и перенес их в другую категорию.

2) Типовая функция для [около]почтовых программ: "пометить все|выделенные письма как [не]прочитанные"

3) Чистка устаревших записей лога

Кроме логов, которые совершенно точно надо чистить с помощью операции DELETE, остальные действия можно делать обычно, без «низкоуровневых» bulk операций.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38885969
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, хм. Пользователь удаляет аккаунт и надо всё с ним связанное деактивировать.

Не частое явление конечно, но вполне себе бизнес-логика :)
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38885970
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТы укурен? И причем тут "бизнес логика"?

Шта?
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38885974
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, хм. Пользователь удаляет аккаунт и надо всё с ним связанное деактивировать.

Не частое явление конечно, но вполне себе бизнес-логика :)Ну, по идее, "активность" такого объекта должна определяться одним полем - "активность" юзера. Тогда для деактивирования нужно поменять только поле активности юзера. Тут я с Хвостом согласен
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38885976
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, хм. Пользователь удаляет аккаунт и надо всё с ним связанное деактивировать.

Не частое явление конечно, но вполне себе бизнес-логика :)

Об этом и речь.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38885978
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttостальные действия можно делать обычно, без «низкоуровневых» bulk операций.Хорошо, как бы концептуально подошел к решению следующей задачи (сюжет основан на реальных событиях):

Есть прайс-лист организации - полмиллиона позиций (ну это полный, вместе с тем, чего уже нет в наличии).
Есть прайс-листы поставщиков, совокупно несколько миллионов позиций.

Прайсы поставщиков нужно периодически обновлять и формировать на основе их прайсов свой прайс. Каждый прайс поставщика - несколько [десятков] тысяч позиций. Его нужно втянуть, сравнить с уже имеющимся в базе, составить карту изменений (что появилось, что пропало, что вообще новое, никогда не было), актуализировать. После чего обновить собственный прайс (сотня тысяч позиций в наличии) - пересчитать наличие и цены с учетом новых реалий.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38885980
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProХорошо, как бы концептуально подошел к решению следующей задачи (сюжет основан на реальных событиях):

Есть прайс-лист организации - полмиллиона позиций (ну это полный, вместе с тем, чего уже нет в наличии).
Есть прайс-листы поставщиков, совокупно несколько миллионов позиций.

Прайсы поставщиков нужно периодически обновлять и формировать на основе их прайсов свой прайс. Каждый прайс поставщика - несколько [десятков] тысяч позиций. Его нужно втянуть, сравнить с уже имеющимся в базе, составить карту изменений (что появилось, что пропало, что вообще новое, никогда не было), актуализировать. После чего обновить собственный прайс (сотня тысяч позиций в наличии) - пересчитать наличие и цены с учетом новых реалий.

Такую задачу я бы решал естественно запросами к БД, а не через EF контекст, если (скорее всего) с записями в прайс-листах не связаны никакие бизнес-процессы, они не представляют собой объекты домена приложения, т.е. это просто табличные данные, значит с ними вполне уместно работать запросами.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38885981
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttТакую задачу я бы решал естественно запросами к БД, а не через EF контекст, если (скорее всего) с записями в прайс-листах не связаны никакие бизнес-процессы, они не представляют собой объекты домена приложения, т.е. это просто табличные данные, значит с ними вполне уместно работать запросами.как раз мой первоначальный вопрос был примерно об этой ситуации.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38885985
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttShocker.ProХорошо, как бы концептуально подошел к решению следующей задачи (сюжет основан на реальных событиях):

Есть прайс-лист организации - полмиллиона позиций (ну это полный, вместе с тем, чего уже нет в наличии).
Есть прайс-листы поставщиков, совокупно несколько миллионов позиций.

Прайсы поставщиков нужно периодически обновлять и формировать на основе их прайсов свой прайс. Каждый прайс поставщика - несколько [десятков] тысяч позиций. Его нужно втянуть, сравнить с уже имеющимся в базе, составить карту изменений (что появилось, что пропало, что вообще новое, никогда не было), актуализировать. После чего обновить собственный прайс (сотня тысяч позиций в наличии) - пересчитать наличие и цены с учетом новых реалий.

Такую задачу я бы решал естественно запросами к БД, а не через EF контекст, если (скорее всего) с записями в прайс-листах не связаны никакие бизнес-процессы, они не представляют собой объекты домена приложения, т.е. это просто табличные данные, значит с ними вполне уместно работать запросами.+1

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

Ну технически, запросами. Уж как конкретно, прямыми SQL, или вызовом хранимки, или с помощью некоего экстеншена, это уже by design. Объёмы табличных данных большие, операция периодическая, значит это будет делать некий сервис.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38885987
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выбор ORM-стратегии (.NET)

В Абрикосе в импорте данных используется Dapper.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38885988
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA Выбор ORM-стратегии (.NET)

В Абрикосе в импорте данных используется Dapper.

Даппер кажется и рожден для того, чтобы колбасить данные, импорт/экспорт/массовая обработка... :)
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38885990
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

спасибо, хорошая статья
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38885991
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANA Выбор ORM-стратегии (.NET)

В Абрикосе в импорте данных используется Dapper.

Даппер кажется и рожден для того, чтобы колбасить данные, импорт/экспорт/массовая обработка... :)Мой посыл в том, что если грамотно изолировать слой доступа к данным, то где надо внутри импользуешь EF, где надо Dapper, а где-то и голый ADO.NET.
...
Рейтинг: 0 / 0
EF: Как вы делаете пакетные операции?
    #38886079
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМой посыл в том, что если грамотно изолировать слой доступа к данным, то где надо внутри импользуешь EF, где надо Dapper, а где-то и голый ADO.NET.

Согласен, тоже хотел об этом сказать.
...
Рейтинг: 0 / 0
25 сообщений из 179, страница 1 из 8
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF: Как вы делаете пакетные операции?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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