DataContext.GetChangeSet 方法

定義

取得 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執行的插入和刪除作業。 例如,下列作業中使用的物件可以在下列清單中建立對應的推斷作業:

  • 集合可能無法根據外鍵條件約束來排序。

  • 資料庫產生的值 (例如,無法使用主鍵和外鍵值、時間戳等等) 。 這類資訊需要資料庫命令執行,而且可能傳播擷取的資訊 (例如,主鍵的外鍵) 。

  • 呼叫時會計算一組已變更的物件。 如果進行其他變更,對的 SubmitChanges 後續呼叫可能會產生不同的集合。

未進行任何變更時輸出,如下所示:

{Added: 0, Removed: 0, Modified: 0}

適用於