Операции вставки, обновления и удаления (LINQ to SQL)
Обновлен: November 2007
В LINQ to SQL операции Insert, Update и Delete выполняются путем добавления, изменения и удаления объектов в объектной модели. По умолчанию LINQ to SQL преобразует действия в язык SQL и отправляет изменения в базу данных.
LINQ to SQL предоставляет максимальную гибкость при сохранении и управлении изменениями, внесенными в объекты. Как только будут доступны объекты сущности (либо при извлечении их с помощью запроса, либо при создании заново), их можно изменить как обычные объекты в приложении. Это значит, что можно изменить их значения, можно добавить их в коллекции или удалить оттуда. LINQ to SQL отслеживает изменения и готов отправить их обратно в базу данных, когда будет вызван метод SubmitChanges.
Примечание. |
---|
LINQ to SQL не поддерживает или не распознает операций каскадного удаления. Если необходимо удалить строку в таблице с ограничениями для нее, следует либо задать правило ON DELETE CASCADE в ограничении внешнего ключа в базе данных, либо использовать собственный код, чтобы сначала удалить эти дочерние объекты, которые препятствуют удалению родительского. В противном случае возникнет исключение. Дополнительные сведения см. в разделе Как удалить строки из базы данных (LINQ to SQL). |
В следующих фрагментах используются классы Customer и Order из образца базы данных "Борей". Для краткости определения классов не показаны.
Dim db As New Northwnd("…\Northwnd.mdf")
Dim cust As Customer = _
(From c In db.Customers _
Where c.CustomerID = "ALFKI" _
Select c) _
.First()
' Change the name of the contact.
cust.ContactName = "New Contact"
' Create and add a new Order to Orders collection.
Dim ord As New Order With {.OrderDate = DateTime.Now}
cust.Orders.Add(ord)
' Delete an existing Order.
Dim ord0 As Order = cust.Orders(0)
' Removing it from the table also removes it from
' the Customer’s list.
db.Orders.DeleteOnSubmit(ord0)
' Ask the DataContext to save all the changes.
db.SubmitChanges()
Northwnd db = new Northwnd(@"c:\Northwnd.mdf");
// Query for a specific customer.
var cust =
(from c in db.Customers
where c.CustomerID == "ALFKI"
select c).First();
// Change the name of the contact.
cust.ContactName = "New Contact";
// Create and add a new Order to the Orders collection.
Order ord = new Order { OrderDate = DateTime.Now };
cust.Orders.Add(ord);
// Delete an existing Order.
Order ord0 = cust.Orders[0];
// Removing it from the table also removes it from the Customer’s list.
db.Orders.DeleteOnSubmit(ord0);
// Ask the DataContext to save all the changes.
db.SubmitChanges();
При вызове метода SubmitChanges LINQ to SQL автоматически создает и выполняет команды SQL, необходимые для передачи изменений обратно в базу данных.
Примечание. |
---|
Это поведение можно переопределить использованием собственной настраиваемой логики, обычно за счет хранимой процедуры. Дополнительные сведения см. в разделе Обязанности разработчика при переопределении поведения по умолчанию (LINQ to SQL). Разработчики, использующие Visual Studio, могут применять конструктор Сред. Объектно-реляционный конструктор для разработки хранимых процедур для той же цели. Дополнительные сведения см. в разделах Реляционный конструктор объектов и Реляционный конструктор объектов и Реляционный конструктор объектов. |
См. также
Основные понятия
Загрузка образцов баз данных (LINQ to SQL)
Другие ресурсы
Настройка операций вставки, обновления и удаления (LINQ to SQL)