插入、更新和刪除作業 (LINQ to SQL)
您可以加入、變更和移除物件模型 (Object Model) 中的物件,以便在 LINQ to SQL 中執行 Insert、Update 和 Delete 作業。 根據預設,LINQ to SQL 會將您的動作轉譯成 SQL 並將變更提交至資料庫。
LINQ to SQL 提供相當大的彈性來操作和保存您對物件所做的變更。 一旦取得實體物件 (透過查詢加以擷取或重新加以建構),您就可以將它們變更為應用程式中的典型物件。 也就是說,您可以變更這些實體物件的值,將它們加入至集合中,以及從集合中加以移除。 LINQ to SQL 會追蹤這些變更,而且在您呼叫 SubmitChanges 時準備好將變更傳送回資料庫。
注意事項 |
---|
LINQ to SQL 不支援或辨識串聯 (Cascade) 刪除作業。如果您想要刪除資料表中有條件約束的資料列,必須在資料庫中的外部索引鍵條件約束中設定 ON DELETE CASCADE 規則,或使用您自己的程式碼先刪除子物件,以防止刪除父物件。否則便會擲回例外狀況。如需詳細資訊,請參閱 HOW TO:從資料庫刪除資料列 (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 命令,以便將變更傳送回資料庫。
注意事項 |
---|
您通常可以透過預存程序 (Stored Procedure),使用自訂邏輯來覆寫這個行為。如需詳細資訊,請參閱開發人員覆寫預設行為的責任 (LINQ to SQL)。 使用 Visual Studio 的開發人員可以使用 物件關聯式設計工具 來開發預存程序,以達到此目的。如需詳細資訊,請參閱物件關聯式設計工具 (O/R 設計工具) 和 物件關聯式設計工具 (O/R 設計工具) 和 物件關聯式設計工具 (O/R 設計工具). |