如何:显示变更集

可以通过使用 DataContext 来查看由 GetChangeSet 跟踪的更改。

示例

下面的示例检索所在城市为伦敦的客户,将其所在城市更改为巴黎,然后将所做的更改提交回数据库。

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()

执行此代码所得到的输出与如下内容类似。 请注意,结尾处的摘要显示做了八项更改。

CustomerID: AROUT
  Original value: London
  Updated value: Paris
CustomerID: BSBEV
  Original value: London
  Updated value: Paris
CustomerID: CONSH
  Original value: London
  Updated value: Paris
CustomerID: EASTC
  Original value: London
  Updated value: Paris
CustomerID: NORTS
   Original value: London
   Updated value: Paris
CustomerID: PARIS
   Original value: London
   Updated value: Paris
CustomerID: SEVES
   Original value: London
   Updated value: Paris
CustomerID: SPECD
   Original value: London
   Updated value: Paris
Total changes: {Added: 0, Removed: 0, Modified: 8}

请参阅