Share via


插入、更新和删除操作 (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)

以下摘录会用到 Northwind 示例数据库中的 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 的开发人员可以使用 对象关系设计器 来开发用于实现此目的的存储过程。对象关系设计器(O/R 设计器)
对象关系设计器(O/R 设计器)
对象关系设计器(O/R 设计器)

请参见

概念

下载示例数据库 (LINQ to SQL)

其他资源

自定义插入、更新和删除操作 (LINQ to SQL)