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}

适用于