powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / removeRange<>() - удаляет как надо, или по одной записи?
25 сообщений из 38, страница 1 из 2
removeRange<>() - удаляет как надо, или по одной записи?
    #39668482
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такой вот вопрос. Или надо расширения ставить?
...
Рейтинг: 0 / 0
removeRange<>() - удаляет как надо, или по одной записи?
    #39668497
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,
Там же видно в консоли какие запросы идут.
По одному объекту должен удалять. Что правильно.
...
Рейтинг: 0 / 0
removeRange<>() - удаляет как надо, или по одной записи?
    #39668662
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,

EF всегда удаляет/изменяет по одному, так как групповое изменение ставить раком кеш контекста.
Нужно также иметь это в виду, если собираешься выполнять запросы на групповые изменения, или хранимки.
...
Рейтинг: 0 / 0
removeRange<>() - удаляет как надо, или по одной записи?
    #39668728
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Поставил эту штуку http://entityframework-plus.net/

В совокупе быстрее не стало, так как "бустится" только операция удаления.

А массивный инсерт как-то убыстрить можно?

EF Extensions вроде как платным стал. o_O
...
Рейтинг: 0 / 0
removeRange<>() - удаляет как надо, или по одной записи?
    #39668738
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомА массивный инсерт как-то убыстрить можно?
- SaveChanges пореже
- выкл контексте контроль изменений
- выкл контексте валидацию.
- не уродовать орм, а взять bulk insert
...
Рейтинг: 0 / 0
removeRange<>() - удаляет как надо, или по одной записи?
    #39668750
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомВ совокупе быстрее не стало, так как "бустится" только операция удаления.
Если связи сложные и с каскадом, то может случится что удаление трех платежек потребует удаления пол базы и данных в 20 табличеках за транзакцию.
Так что целостность базы важнее вашей вставки 100 строчек за раз.
...
Рейтинг: 0 / 0
removeRange<>() - удаляет как надо, или по одной записи?
    #39668783
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Агнец за бортомВ совокупе быстрее не стало, так как "бустится" только операция удаления.
Если связи сложные и с каскадом, то может случится что удаление трех платежек потребует удаления пол базы и данных в 20 табличеках за транзакцию.
Так что целостность базы важнее вашей вставки 100 строчек за раз.

слова все русские, а что ты хотел сказать - не понимаю
...
Рейтинг: 0 / 0
removeRange<>() - удаляет как надо, или по одной записи?
    #39668809
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомслова все русские, а что ты хотел сказать - не понимаюпридуриваешься.
Как ты хотел удалить пачкой объекты со связями один ко многим?
))))
Так что не придуривайся.
...
Рейтинг: 0 / 0
removeRange<>() - удаляет как надо, или по одной записи?
    #39668838
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Агнец за бортомслова все русские, а что ты хотел сказать - не понимаюпридуриваешься.
Как ты хотел удалить пачкой объекты со связями один ко многим?
))))
Так что не придуривайся.

Я задал конкретный вопрос - и не понимаю, как расценить с позиции ответа твой мессадж.

Про какие связи один ко многим ты знаешь в моей DB?
...
Рейтинг: 0 / 0
removeRange<>() - удаляет как надо, или по одной записи?
    #39668851
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомПро какие связи один ко многим ты знаешь в моей DB?
ОРМ работает со связями на уровне своей модели.
Поэтому пофигу сколько у тебя конкретно связей.
Гони дальше.
...
Рейтинг: 0 / 0
removeRange<>() - удаляет как надо, или по одной записи?
    #39668863
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ОРМ работает со связями на уровне своей модели.

Да с чего ты взял, что у меня вообще есть связи, чукча?
...
Рейтинг: 0 / 0
removeRange<>() - удаляет как надо, или по одной записи?
    #39668884
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,
Ты правда не врубаешься?
Это не важно, есть они у тебя или нет.
Код в орм одинаковый и обрабатывает по одной записи даже если у тебя их нет.
...
Рейтинг: 0 / 0
removeRange<>() - удаляет как надо, или по одной записи?
    #39668945
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Как ты хотел удалить пачкой объекты со связями один ко многим?

Ты реально дуГачок что ли? Я их и удаляю "ПАЧКОЙ".


Агнец за бортомА массивный инсерт как-то убыстрить можно?
Я задал простой вопрос.

Что ты тут развёл?
...
Рейтинг: 0 / 0
removeRange<>() - удаляет как надо, или по одной записи?
    #39668956
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомА массивный инсерт как-то убыстрить можно?

через EF нет, так как он проектировался на в расчёте на скорость операций, соответственно это как заставить корову лаять и гоняться за кроликами.

тут либо делать быстрые операции в обход контекста EF, например, через Dapper, либо смириться :)
...
Рейтинг: 0 / 0
removeRange<>() - удаляет как надо, или по одной записи?
    #39668957
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомEF Extensions вроде как платным стал. o_O

даже задаром не был никогда нужен. ибо, на крайний в EF можно пропихивать свои SQL запросы.
...
Рейтинг: 0 / 0
removeRange<>() - удаляет как надо, или по одной записи?
    #39668974
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

То есть, если есть нужда ПРОСТО:

1. Быстро удалить записи.
2. Быстро (относительно) их вставить.

То EF Extensions задаром не нужен, а тот же Dapper - окей?

Задачи не меняются, то и то - библиотеки - почему разное отношение?

Массивный инсерт - это засыл пачки команд на скл сервер и обработка их там, никакой магии.

А EF реально по одной их гонит?
...
Рейтинг: 0 / 0
removeRange<>() - удаляет как надо, или по одной записи?
    #39668975
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомPetro123Как ты хотел удалить пачкой объекты со связями один ко многим?

Ты реально дуГачок что ли? Я их и удаляю "ПАЧКОЙ".


Агнец за бортомА массивный инсерт как-то убыстрить можно?
Я задал простой вопрос.

Что ты тут развёл?
Можем проще:
Вопрос про удаление - удаляются по одной.
Вопрос про вставку - ответ выше.
Можешь еще сутки погулять чтобы смириться)).
...
Рейтинг: 0 / 0
removeRange<>() - удаляет как надо, или по одной записи?
    #39668980
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомА EF реально по одной их гонит?ты тупишь?
Включи галку и смотри что он гонит.
...
Рейтинг: 0 / 0
removeRange<>() - удаляет как надо, или по одной записи?
    #39668983
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомТо есть, если есть нужда ПРОСТО:

1. Быстро удалить записи.
2. Быстро (относительно) их вставить.
Секретное оружие:
Код: c#
1.
ent.Database.ExecuteSqlCommand("truncate table");
...
Рейтинг: 0 / 0
removeRange<>() - удаляет как надо, или по одной записи?
    #39668988
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомТо есть, если есть нужда ПРОСТО:

1. Быстро удалить записи.
2. Быстро (относительно) их вставить.

То EF Extensions задаром не нужен, а тот же Dapper - окей?

Я не смотрел как внутри устроены EF Extension, но если делают тоже самое, что Dapper, то тоже окей :)

В Dapper можно в команду insert передать коллекцию, в результате будет сгенерирована команда

insert into table1 (a, b, c) values (...), (...),...

т.е. очень быстро.

Агнец за бортомЗадачи не меняются, то и то - библиотеки - почему разное отношение?

Потому что у EF есть контекст, который управляет моделью данных и кеш. Т.е. это ещё и серверная валидация, чего невозможно сделать, если тебе надо работать с данными напрямую, уповая на констрейты базы данных. Плюс в EF могут быть добавлены события на изменения, которые будут, например, вести аудит, насыщать данные, например пользователь и дата создания. При массовых операциях этого не будет, это противоречит логике слоя работы с данными. Будут сюрпризы и сложностию.


Агнец за бортомА EF реально по одной их гонит?

Да.
...
Рейтинг: 0 / 0
removeRange<>() - удаляет как надо, или по одной записи?
    #39669639
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttinsert into table1 (a, b, c) values (...), (...),...

т.е. очень быстро.

А будет реальная разница между

insert into table1 (a, b, c) values (...), (...),...

и

insert into table1 (a, b, c) values (...)
insert into table1 (a, b, c) values (...)
....

на большом количестве записей?

тестировать лень )
...
Рейтинг: 0 / 0
removeRange<>() - удаляет как надо, или по одной записи?
    #39669653
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
removeRange<>() - удаляет как надо, или по одной записи?
    #39669760
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старая тема, 7 лет прошло, я ее видел. Чел выдал простыню на простой вопрос и загрузил ).
Можно в двух словах?
И как оно на 2014, 2016 серверах.
...
Рейтинг: 0 / 0
removeRange<>() - удаляет как надо, или по одной записи?
    #39669795
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парамон,

Бенчмарков не делал, то должно быть очевидно, что один statement выполняется быстрее, чем несколько.
Но согласен, интересно. Будет время, сделаю бенч.
...
Рейтинг: 0 / 0
removeRange<>() - удаляет как надо, или по одной записи?
    #39669802
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Агнец за бортом, 3 июл 18, 16:47 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297572&msg=21539864][21539864]
>...То EF Extensions задаром не нужен, а тот же Dapper - окей?...

А хранимую процедуру из EF вызвать нельзя?
Как то так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
      . . . 
      //-- Удалим данный срез
      asp = new OracleParameter[2]{
        new OracleParameter("cur_viborka", OracleDbType.Cursor, ParameterDirection.Output),
        new OracleParameter("x_dateizm", dt_srez_new) //-- время среза
      };
      lst_Entity = null;  lst_Entity = new List<row_Entity>();
      await Task.Run(() => wsp.Entity_SP("NCUYAO_GIS.Srez_Del_Srez", wsp.sp_Sel, asp, RowToEntity));
      if (wsp.wspErr != null) { сообщение = wsp.wspErr; goto mp1; }

      //-- Покажем результирующую выборку 
      if (lst_Entity.Count != 0) {
        //-- Не штатная ситуация
        MessageBox.Show("Ошибка удаления старого среза", caption_Entity, MessageBoxButton.OK);
        lst_Entity = lst_Entity.OrderBy(x => x.mesto).ThenByDescending(x => x.rn).ThenBy(x => x.pk).ToList();
      }
      oc_Entity = new ObservableCollection<row_Entity>(lst_Entity);
      lst_Entity = null;
      dgv_Entity.ItemsSource = oc_Entity;
      . . .


В моём случае хранимка выдаёт выборку: пустую, если ок; или с не доделанной работой.
...
Рейтинг: 0 / 0
25 сообщений из 38, страница 1 из 2
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / removeRange<>() - удаляет как надо, или по одной записи?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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