DataContext.GetChangeSet 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得 DataContext 所追蹤的已修改物件。
public:
System::Data::Linq::ChangeSet ^ GetChangeSet();
public System.Data.Linq.ChangeSet GetChangeSet ();
member this.GetChangeSet : unit -> System.Data.Linq.ChangeSet
Public Function GetChangeSet () As ChangeSet
傳回
這組物件是以三個唯讀集合傳回。
範例
Northwnd db = new Northwnd(@"c:\northwnd.mdf");
var custQuery =
from cust in db.Customers
where cust.City == "London"
select cust;
foreach (Customer custObj in custQuery)
{
Console.WriteLine("CustomerID: {0}", custObj.CustomerID);
Console.WriteLine("\tOriginal value: {0}", custObj.City);
custObj.City = "Paris";
Console.WriteLine("\tUpdated value: {0}", custObj.City);
}
ChangeSet cs = db.GetChangeSet();
Console.Write("Total changes: {0}", cs);
// Freeze the console window.
Console.ReadLine();
db.SubmitChanges();
Dim db As New Northwnd("c:\northwnd.mdf")
Dim custQuery = _
From cust In db.Customers _
Where (cust.City = "London") _
Select cust
For Each custObj As Customer In custQuery
Console.WriteLine("CustomerID: {0}", custObj.CustomerID)
Console.WriteLine(vbTab & "Original value: {0}", custObj.City)
custObj.City = "Paris"
Console.WriteLine(vbTab & "Updated value: {0}", custObj.City)
Next
Dim cs As ChangeSet = db.GetChangeSet()
Console.Write("Total changes: {0}", cs)
' Freeze the console window.
Console.ReadLine()
db.SubmitChanges()
備註
請注意下列考量:
GetChangeSet 可能會有副作用,例如推斷通常會在 時 SubmitChanges執行的插入和刪除作業。 例如,下列作業中使用的物件可以在下列清單中建立對應的推斷作業:
Add 變更為 InsertOnSubmit。
EntityRef<TEntity> 指派至 null (,可能是因為 Remove 到 DeleteOnSubmit。
集合可能無法根據外鍵條件約束來排序。
資料庫產生的值 (例如,無法使用主鍵和外鍵值、時間戳等等) 。 這類資訊需要資料庫命令執行,而且可能傳播擷取的資訊 (例如,主鍵的外鍵) 。
呼叫時會計算一組已變更的物件。 如果進行其他變更,對的 SubmitChanges 後續呼叫可能會產生不同的集合。
未進行任何變更時輸出,如下所示:
{Added: 0, Removed: 0, Modified: 0}