Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 拒绝域上下文中的特定已删除项_C#_Silverlight 4.0_Wcf Ria Services_Rollback_Domaincontext - Fatal编程技术网

C# 拒绝域上下文中的特定已删除项

C# 拒绝域上下文中的特定已删除项,c#,silverlight-4.0,wcf-ria-services,rollback,domaincontext,C#,Silverlight 4.0,Wcf Ria Services,Rollback,Domaincontext,我正在使用Silverlight4和Ria服务: 如果我们有一个表(称为“MyTable”),其中有3条记录(1、2、3),我刚刚在应用程序的某个地方编写了以下代码: CurrentItem = 1; MyContext.MyTables.Delete(CurrentItem); CurrentItem = 2; MyContext.MyTables.Delete(CurrentItem); 出于某些原因,在点击“保存”按钮之前,我想拒绝第一个已删除的项目(1),但仍然想删除第二个项目(2

我正在使用Silverlight4和Ria服务:

如果我们有一个表(称为“MyTable”),其中有3条记录(1、2、3),我刚刚在应用程序的某个地方编写了以下代码:

CurrentItem  = 1;
MyContext.MyTables.Delete(CurrentItem);
CurrentItem  = 2;
MyContext.MyTables.Delete(CurrentItem);
出于某些原因,在点击“保存”按钮之前,我想拒绝第一个已删除的项目(1),但仍然想删除第二个项目(2)。这意味着我不能使用:

MyContext.RejectChanges()  
因为它将拒绝所有更改(包括我确实想删除的已删除项目),所以我认为,使用IRevertibleChangeTracking可以解决我的问题。类似于:

((IRevertibleChangeTracking) MyItem).RejectChanges();
但在使用此界面之前,我必须访问已删除的项目。起初,它试图通过MyContext.MyTables获取它,但它不包含已删除的记录,因此我尝试通过EntityChangeSet获取它:

EntityChangeSet Changes =  MyContext.EntityContainer.GetChanges();
MyTable  DeletedItem  = Changes.First<MyTables>( e => e.ID = 1 ) ;
但是在运行之后,这行代码并没有改变记录的状态,它被保留为“已删除”,所以通过点击“保存”按钮,它从数据库中物理删除了!!!! 似乎IRevertibleChangeTracking不适用于已删除/添加的项目(它只适用于已修改的项目)

那么,有没有办法从DomainContext中拒绝特定的已删除项


谢谢,

经过一番打猎,我找到了

每个RIA服务实体都实现IRevertibleChangeTracking接口。您只需将实体强制转换为IRevertibleChangeTracking并调用RejectChanges。RejectChanges不适用于新实体或已删除实体


除了删除每个实体,您是否可以将布尔属性设置为false,并在完成后删除标志设置为
false
的实体?

再搜索一下,我发现

每个RIA服务实体都实现IRevertibleChangeTracking接口。您只需将实体强制转换为IRevertibleChangeTracking并调用RejectChanges。RejectChanges不适用于新实体或已删除实体


除了删除每个实体,您是否可以将布尔属性设置为false,并在完成后删除标志设置为
false
的实体?

欢迎使用SO,请花几分钟时间阅读常见问题解答和标记文档(编辑问题时,右边空白处有一个有用的语法)。欢迎使用SO,请花几分钟时间阅读常见问题解答和降价文档(编辑问题时,可在右边空白处找到该文档的有用语法)。
((IRevertibleChangeTracking) DeletedItem  ).RejectChanges();