LINQ to SQL 透過實體集合的 InsertOnSubmit/DeleteOnSubmit 追蹤變更,SubmitChanges 以交易方式一次提交。
var newCustomer = new Customer {
CustomerID = "MCSFT", CompanyName = "Microsoft",
ContactName = "John Doe", ContactTitle = "Sales Manager",
Address = "1 Microsoft Way", City = "Redmond", Region = "WA",
PostalCode = "98052", Country = "USA", Phone = "(425) 555-1234"
};
db.Customers.InsertOnSubmit(newCustomer);
db.SubmitChanges();
var newCategory = new Category { CategoryName = "Widgets", Description = "..." };
var newProduct = new Product { ProductName = "Blue Widget", UnitPrice = 34.56M, Category = newCategory };
db.Categories.InsertOnSubmit(newCategory); // 僅插入一端,多端自動關聯
db.SubmitChanges();
var cust = db.Customers.First(c => c.CustomerID == "ALFKI");
cust.ContactName = "New Name";
db.SubmitChanges(); // 自動偵測異動欄位,產生 UPDATE SQL
var cust = db.Customers.First(c => c.CustomerID == "ALFKI");
db.Customers.DeleteOnSubmit(cust);
db.SubmitChanges();
// 實體來自其他 DataContext 或序列化傳輸
db.Customers.Attach(updatedCust, originalCust); // 原始值用於並發檢查
db.SubmitChanges();
SubmitChanges 隱含交易:全成功或全失敗回滾