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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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


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

Да.
...
Рейтинг: 0 / 0
04.07.2018, 18:10
    #39669639
Парамон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
removeRange<>() - удаляет как надо, или по одной записи?
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
04.07.2018, 18:31
    #39669653
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
removeRange<>() - удаляет как надо, или по одной записи?
...
Рейтинг: 0 / 0
05.07.2018, 00:17
    #39669760
Парамон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
removeRange<>() - удаляет как надо, или по одной записи?
Старая тема, 7 лет прошло, я ее видел. Чел выдал простыню на простой вопрос и загрузил ).
Можно в двух словах?
И как оно на 2014, 2016 серверах.
...
Рейтинг: 0 / 0
05.07.2018, 08:24
    #39669795
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
removeRange<>() - удаляет как надо, или по одной записи?
Парамон,

Бенчмарков не делал, то должно быть очевидно, что один statement выполняется быстрее, чем несколько.
Но согласен, интересно. Будет время, сделаю бенч.
...
Рейтинг: 0 / 0
05.07.2018, 08:50
    #39669802
ВМоисеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
removeRange<>() - удаляет как надо, или по одной записи?
>Агнец за бортом, 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
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / removeRange<>() - удаляет как надо, или по одной записи? / 25 сообщений из 38, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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