Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Вы выполняете операции с Insert, Update и Delete в LINQ to SQL, добавляя, изменяя и удаляя объекты в вашей объектной модели. По умолчанию LINQ to SQL преобразует действия в SQL и отправляет изменения в базу данных.
LINQ to SQL обеспечивает максимальную гибкость в управлении и сохранении изменений, внесенных в объекты. Как только объекты сущностей доступны (путем извлечения их через запрос или путем создания их заново), их можно изменить как типичные объекты в приложении. То есть вы можете изменить их значения, добавить их в коллекции и удалить их из коллекций. LINQ to SQL отслеживает изменения и готов передавать их обратно в базу данных при вызове SubmitChanges.
Замечание
LINQ to SQL не поддерживает или распознает операции каскадного удаления. Если вы хотите удалить строку в таблице с ограничениями, необходимо задать ON DELETE CASCADE правило в ограничении внешнего ключа в базе данных или использовать собственный код, чтобы сначала удалить дочерние объекты, которые препятствуют удалению родительского объекта. В противном случае создается исключение. Дополнительные сведения см. в разделе "Практическое руководство. Удаление строк из базы данных".
В следующих фрагментах используются классы Customer и Order из примерной базы данных Northwind. Определения классов не отображаются для краткости.
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();
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()
При вызове SubmitChanges LINQ to SQL автоматически создает и выполняет команды SQL, которые необходимы, чтобы передать ваши изменения обратно в базу данных.
Замечание
Это поведение можно переопределить с помощью собственной пользовательской логики, как правило, с помощью хранимой процедуры. Дополнительные сведения см. в разделе "Обязанности разработчика в переопределении поведения по умолчанию".
Разработчики, использующие Visual Studio, могут использовать реляционный конструктор объектов для разработки хранимых процедур для этой цели.