理解 LINQ to SQL 如何在物件層級維護「身分識別」,是掌握變更追蹤與開放式並發的基石。
DataContext 透過身分對應表橋接兩者:
SubmitChanges() 時偵測衝突Customer cust1 = db.Customers.First(c => c.CustomerID == "BONAP");
Customer cust2 = db.Customers.First(c => c.CustomerID == "BONAP");
// cust1 == cust2 為 true,同一實例
Customer cust1 = db.Customers.First(c => c.CustomerID == "BONAP");
Customer cust2 = (from o in db.Orders
where o.Customer.CustomerID == "BONAP"
select o).First().Customer;
// cust1 == cust2 為 true,雖查詢資料庫兩次
SubmitChanges 時比較資料庫現值