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}