Linq to sql 我可以吗;撤销;LINQ到SQL更新?

Linq to sql 我可以吗;撤销;LINQ到SQL更新?,linq-to-sql,linq-to-entities,Linq To Sql,Linq To Entities,在LINQ to SQL中,如果我在上下文中更新了一个对象,但没有调用SubmitChanges,有没有办法“撤消”或放弃该更新,以便在我最终调用SubmitChanges时不会提交更改? 例如,如果我更新了几个对象,然后决定在提交之前放弃对其中一个对象的更改 第2部分:Entity Framework的相同问题,v3.5LINQ to SQL和Entity Framework都将使用相同的调用(假设您仍然具有活动上下文): 更合适的方法是将上下文视为工作单元,在这种情况下,刷新对象时将不再具有

在LINQ to SQL中,如果我在上下文中更新了一个对象,但没有调用SubmitChanges,有没有办法“撤消”或放弃该更新,以便在我最终调用SubmitChanges时不会提交更改? 例如,如果我更新了几个对象,然后决定在提交之前放弃对其中一个对象的更改


第2部分:Entity Framework的相同问题,v3.5

LINQ to SQL和Entity Framework都将使用相同的调用(假设您仍然具有活动上下文):


更合适的方法是将上下文视为工作单元,在这种情况下,刷新对象时将不再具有活动上下文。您只需处理当前使用的对象,并从新上下文中获取新副本。

我认为您可以使用.GetOriginalEntityState(您的实体)检索原始值。然后将更新的实体设置回原始实体

dim db as new yourDataContext
//get entity
dim e1 as yourEntity = (from x in db.table1).take(1)
//update entity
e1.someProperty = 'New Value'
//get original entity
dim originalEntity = db.table1.getOrignalEntityState(e1)
e1 = originalEntity
db.submitChanges()

非常伪代码,但我认为它传达了正确的想法。使用此方法,您还可以只撤消一个或多个属性更改,而不刷新整个实体。

可能与否重复,这篇文章是关于如何撤消所有更改的。我只想放弃其中的一些。
dim db as new yourDataContext
//get entity
dim e1 as yourEntity = (from x in db.table1).take(1)
//update entity
e1.someProperty = 'New Value'
//get original entity
dim originalEntity = db.table1.getOrignalEntityState(e1)
e1 = originalEntity
db.submitChanges()