Практическое руководство. Как удалить строки из базы данных
Вы можете удалить строки в базе данных, удалив соответствующие объекты LINQ to SQL из коллекции, связанной с таблицами. LINQ to SQL преобразует изменения в соответствующие команды SQL DELETE .
LINQ to SQL не поддерживает и не распознает операции каскадного удаления. Если требуется удалить строку в таблице, имеющей ограничения, необходимо выполнить любую из следующих задач.
- Установите правило ON DELETE CASCADE в ограничении внешнего ключа в базе данных.
- Используйте собственный код, чтобы сначала удалить дочерние объекты, не допускающие удаление родительского объекта.
В противном случае создается исключение. См. второй пример кода далее в этом разделе.
Вы можете переопределить LINQ to SQL методы по умолчанию для Insert операций с базой данных , Update и Delete . Дополнительные сведения см. в разделе Настройка операций вставки, обновления и удаления.
Разработчики, использующие Visual Studio, могут использовать реляционный конструктор объектов для разработки хранимых процедур с той же целью.
В следующих шагах предполагается, что подключение к базе данных Northwind выполняется с помощью допустимого объекта DataContext. Дополнительные сведения см. в разделе Практическое руководство. Подключение к базе данных.
Удаление строки в базе данных
- Отправьте в базу данных запрос на удаляемую строку.
- Вызовите метод DeleteOnSubmit.
- Отправьте изменение в базу данных.
Пример 1
В первом примере кода в базу данных отправляется запрос на сведения о заказе «Order #11000», помечаются сведения для удаления, а изменения отправляются в базу данных.
// Query the database for the rows to be deleted. var deleteOrderDetails = from details in db.OrderDetails where details.OrderID == 11000 select details; foreach (var detail in deleteOrderDetails) < db.OrderDetails.DeleteOnSubmit(detail); >try < db.SubmitChanges(); >catch (Exception e) < Console.WriteLine(e); // Provide for exceptions. >
' Query the database for the rows to be deleted. Dim deleteOrderDetails = _ From details In db.OrderDetails() _ Where details.OrderID = 11000 _ Select details For Each detail As OrderDetail In deleteOrderDetails db.OrderDetails.DeleteOnSubmit(detail) Next Try db.SubmitChanges() Catch ex As Exception Console.WriteLine(ex) ' Provide for exceptions End Try
Пример 2
Целью второго примера является удаление заказа (с номером 10250). Код сначала проверяет таблицу OrderDetails на наличие в ней дочерних элементов удаляемого заказа. Если в таблице есть дочерние элементы заказа, сначала они, а затем сам заказ помечаются для удаления. DataContext располагает фактические действия по удалению в надлежащей последовательности, чтобы команды удаления, отправляемые в базу данных, подчинялись ее ограничениям.
Northwnd db = new Northwnd(@"c:\northwnd.mdf"); db.Log = Console.Out; // Specify order to be removed from database int reqOrder = 10250; // Fetch OrderDetails for requested order. var ordDetailQuery = from odq in db.OrderDetails where odq.OrderID == reqOrder select odq; foreach (var selectedDetail in ordDetailQuery) < Console.WriteLine(selectedDetail.Product.ProductID); db.OrderDetails.DeleteOnSubmit(selectedDetail); >// Display progress. Console.WriteLine("detail section finished."); Console.ReadLine(); // Determine from Detail collection whether parent exists. if (ordDetailQuery.Any()) < Console.WriteLine("The parent is present in the Orders collection."); // Fetch Order. try < var ordFetch = (from ofetch in db.Orders where ofetch.OrderID == reqOrder select ofetch).First(); db.Orders.DeleteOnSubmit(ordFetch); Console.WriteLine("OrderID is marked for deletion.", ordFetch.OrderID); > catch (Exception e) < Console.WriteLine(e.Message); Console.ReadLine(); >> else < Console.WriteLine("There was no parent in the Orders collection."); >// Display progress. Console.WriteLine("Order section finished."); Console.ReadLine(); try < db.SubmitChanges(); >catch (Exception e) < Console.WriteLine(e.Message); Console.ReadLine(); >// Display progress. Console.WriteLine("Submit finished."); Console.ReadLine();
Dim db As New Northwnd("c:\northwnd.mdf") db.Log = Console.Out ' Specify order to be removed from database. Dim reqOrder As Integer = 10252 ' Fetch OrderDetails for requested order. Dim ordDetailQuery = _ From odq In db.OrderDetails _ Where odq.OrderID = reqOrder _ Select odq For Each selectedDetail As OrderDetail In ordDetailQuery Console.WriteLine(selectedDetail.Product.ProductID) db.OrderDetails.DeleteOnSubmit(selectedDetail) Next ' Display progress. Console.WriteLine("Detail section finished.") Console.ReadLine() ' Determine from Detail collection whether parent exists. If ordDetailQuery.Any Then Console.WriteLine("The parent is present in the Orders collection.") ' Fetch order. Try Dim ordFetch = _ (From ofetch In db.Orders _ Where ofetch.OrderID = reqOrder _ Select ofetch).First() db.Orders.DeleteOnSubmit(ordFetch) Console.WriteLine(" OrderID is marked for deletion.,", ordFetch.OrderID) Catch ex As Exception Console.WriteLine(ex.Message) Console.ReadLine() End Try Else Console.WriteLine("There was no parent in the Orders collection.") End If ' Display progress. Console.WriteLine("Order section finished.") Console.ReadLine() Try db.SubmitChanges() Catch ex As Exception Console.WriteLine(ex.Message) Console.ReadLine() End Try ' Display progress. Console.WriteLine("Submit finished.") Console.ReadLine()
См. также раздел
- Практическое руководство. Как управлять конфликтами изменений
- Практическое руководство. Назначение хранимых процедур для выполнения обновления, вставки и удаления (реляционный конструктор объектов)
- Внесение и отправка изменений данных
Как удалить строку
Как удалить строку в БД
Привет всем. Есть форма, кнопка удалить удаляет строку в БД, нужно сделать так, что бы когда он.
Двунаправленный линейный список строк. Вставить строку, удалить строку и заменить строку
3 двунаправленный линейный список строк.требуется вставить строку после строки с номером и удалить.
Как удалить строку в БД
Не пойму почему не работает. <?php $dbs = mysqli_connect ("localhost", "busoop8x_oc".
как удалить строку
создаю консольное приложение, программа должна принимать n количество оценок, каждую оценку.
11501 / 3788 / 679
Регистрация: 13.02.2009
Сообщений: 11,191
Организуй цикл от последней строки до первой с шагом -1
Регистрация: 28.03.2017
Сообщений: 28
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Private Function naef_NotifDelete(ByVal notifId) naef_NotifDelete=False Dim r With document.frm.pmtProp if .Rows > 0 Then r=.Rows Do While r > 0 If .Cell(r, NAPE_PMTCOL_NOTIFID) = notifId Then .Rows(r).Delete End If r = r - 1 Loop End If End With naef_NotifDelete=True End Function
Ошибка та же. Цикл выполняется. На нужной строчке у меня
.Rows(r).Delete
ошибка. Не правильный синтаксис. Подскажите как правильно удалять строку
Текст ошибки
Error: Wrong number of arguments or invalid property assigment ‘Rows’
Добавлено через 5 минут
перепробовал следующие варианты
.Cell(r, NAPE_PMTCOL_NOTIFID).EntireRow.Delete
.Row(r).Delete
.Rows(r).Delete
11501 / 3788 / 679
Регистрация: 13.02.2009
Сообщений: 11,191
NAPE_PMTCOL_NOTIFID — чему равна?
в этой процедуре она не назначается
Вложения
| удалить.rar (13.2 Кб, 4 просмотров) |
Регистрация: 28.03.2017
Сообщений: 28
Alex77755Это заполненная таблица в html
Эту функцию я вызываю и передаю значение notifId. Сам цикл работает, находит нужную строчки, но не удаляет
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
With document.frm.pmtProp .HeaderHeight = 600 .Cols = NAPE_PMTCOL_COLS .Cell(-1, NAPE_PMTCOL_NN) = "NN" .ColWidth(NAPE_PMTCOL_NN) = 500 .Cell(-1, NAPE_PMTCOL_CNT) = "Количество" .ColWidth(NAPE_PMTCOL_CNT) = 1000 .Cell(-1, NAPE_PMTCOL_COSTACC) = "Цена на основе бухгалтерских данных" .ColWidth(NAPE_PMTCOL_COSTACC) = 2000 .Cell(-1, NAPE_PMTCOL_COSTINDEP) = "Цена независимой оценки" .ColWidth(NAPE_PMTCOL_COSTINDEP) = 2000 .Cell(-1, NAPE_PMTCOL_DESCRKAZ) = "Описание имущества на казахском языке" .ColWidth(NAPE_PMTCOL_DESCRKAZ) = 3700 .Cell(-1, NAPE_PMTCOL_DESCRRUS) = "Описание имущества на русском языке" .ColWidth(NAPE_PMTCOL_DESCRRUS) = 10700 .ColWidth(NAPE_PMTCOL_NOTIFID) = 0 ' Id notification` .ColWidth(NAPE_PMTCOL_OBJECTUID) = 0 End With
Добавлено через 6 минут
Сообщение от Alex77755 
NAPE_PMTCOL_NOTIFID — чему равна?
в этой процедуре она не назначается
Это стринговое значение, которое уже заполнено. Из другого списка выбираю какое то уведомление, где берется индификатор и прогоняется по всей таблице. Таблица не Excel
11501 / 3788 / 679
Регистрация: 13.02.2009
Сообщений: 11,191
Таблица не Excel
А в чём?
там может быть другой синтаксис
Регистрация: 28.03.2017
Сообщений: 28
Alex77755DataGridView. Посоветуйте как еще можно обратиться в VBS кроме этих команд на удаление
.Cell(r, NAPE_PMTCOL_NOTIFID).EntireRow.Delete
.Row(r).Delete
.Rows(r).Delete
Добавлено через 29 минут
Alex77755
Существует ли какой то профайлер, что бы можно было отследить что происходит при нажатий клавиши Delete(т.к. строки удаляются таким способом)? Я предпологаю что это DataGrid.
object id='pmtProp' style='width:100%; height:450px'>/object>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
' Описать колонки таблицы имущества. Private Function naef_InitPmtProp() naef_InitPmtProp=False With document.frm.pmtProp .HeaderHeight = 600 .Cols = NAPE_PMTCOL_COLS .Cell(-1, NAPE_PMTCOL_NN) = "NN" .ColWidth(NAPE_PMTCOL_NN) = 500 .Cell(-1, NAPE_PMTCOL_CNT) = "Количество" .ColWidth(NAPE_PMTCOL_CNT) = 1000 .Cell(-1, NAPE_PMTCOL_COSTACC) = "Цена на основе бухгалтерских данных" .ColWidth(NAPE_PMTCOL_COSTACC) = 2000 .Cell(-1, NAPE_PMTCOL_COSTINDEP) = "Цена независимой оценки" .ColWidth(NAPE_PMTCOL_COSTINDEP) = 2000 .Cell(-1, NAPE_PMTCOL_DESCRKAZ) = "Описание имущества на казахском языке" .ColWidth(NAPE_PMTCOL_DESCRKAZ) = 3700 .Cell(-1, NAPE_PMTCOL_DESCRRUS) = "Описание имущества на русском языке" .ColWidth(NAPE_PMTCOL_DESCRRUS) = 10700 .ColWidth(NAPE_PMTCOL_NOTIFID) = 0 ' Id notification` .ColWidth(NAPE_PMTCOL_OBJECTUID) = 0 End With naef_InitPmtProp=True End Function
Удалить строку или элемент строки
Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).

Совет. Видео не на вашем языке? Попробуйте выбрать Скрытые субтитры .
Примечание: Не видите план? Возможно, у вас нет нужной лицензии или администратор должен включить ее.
Проверьте, как это работает!
Удаление этапа или ключевой даты из строки плана
- Выберите элемент и нажмите кнопку открыть подробности.
- Выберите удалить этап или Удалить ключевую дату.
Примечание: Это действие не приводит к изменению подключенного проекта. Он только отключает этап или ключевую дату из этого плана.
Отключение всей строки в плане
- Выберите имя строки.
- Нажмите кнопку Удалить строку.
Примечание: Это действие не приводит к изменению подключенного проекта. Она только удаляет строку из этого плана.
Как удалить строку кода(хоткей)?
По хоткею удалить/вырезать/скопировать строку, на которой находится курсор.
Аналог — Ctrl+Y/X в Rider.
- Вопрос задан более трёх лет назад
- 9393 просмотра
Комментировать
Решения вопроса 0
Ответы на вопрос 3
Drovosek01 @Drovosek01
Удалить строку, в которой стоит курсор, можно с помощью Shift + Delete (при этом она копируется в буфер обмена).
Ответ написан более трёх лет назад
Нравится 9 1 комментарий
