Удаление объема в LINQ к объектам

Проблема была решена путем переименования столбца 'seanceNumber' в 'seancenumber' в таблице.

«Имена столбцов в SQL обычно нечувствительны к регистру, поэтому не имеет значения, запрашиваете ли вы seance, SEANCE или SeAnCe. Однако, если вы помещаете имена столбцов в двойные кавычки, они становятся чувствительными к регистру - я думаю, ваши UserMapper сделал именно это и запросил столбец с именем «seanceNumber», а база данных не смогла его найти (поскольку в базе данных он называется seancenumber или SEANCENUMBER). "

79
задан Benjamin Pollack 15 May 2009 в 19:58
поделиться

5 ответов

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

1
ответ дан 24 November 2019 в 10:14
поделиться

Некоторое время назад я написал серию блогов из 4 частей (Части 1 , 2 , 3 и 4 ), охватывающих выполнение массовых обновлений (с помощью одной команды) в Entity Framework.

Хотя основное внимание в этой серии было уделено обновлению, вы определенно могли использовать принципы, используемые для удаления.

Итак, вы должны иметь возможность написать что-то вроде этого:

var query = from c in ctx.Customers
            where c.SalesPerson.Email == "..."
            select c;

query.Delete();

Все, что вам нужно сделать, это реализовать метод расширения Delete (). См. Серию сообщений, чтобы узнать, как ...

Надеюсь, это поможет

54
ответ дан 24 November 2019 в 10:14
поделиться

Я знаю о методе DeleteAllOnSubmit любого контекста данных, который удалит все записи в запросе. В основе должна быть некоторая оптимизация, поскольку удаляется много объектов. Хотя я не уверен.

2
ответ дан 24 November 2019 в 10:14
поделиться

Я не уверен, насколько это эффективно, но вы можете попробовать что-то вроде этого:

// deletes all "People" with the name "Joe"
var mypeople = from p in myDataContext.People
               where p.Name == "Joe";
               select p;
myDataContext.People.DeleteAllOnSubmit(mypeople);
myDataContext.SubmitChanges();
2
ответ дан 24 November 2019 в 10:14
поделиться

Здесь я вижу ответы: Linq to Sql

DeleteAllOnSubmit является частью System.Data.Linq и ITable, которые являются Linq to Sql

Этого нельзя сделать с Entity Framework.

Сказав все это, у меня еще нет решения, но я отправлю его, когда сделаю

7
ответ дан 24 November 2019 в 10:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: